【问题标题】:SSIS: Column 'column_name' cannot be found at the datasourceSSIS:在数据源中找不到列“column_name”
【发布时间】:2019-11-11 07:11:37
【问题描述】:

我正在从事一个 SSIS 项目。我正在尝试对文件运行查询。在我的包中,我有一个运行此查询的 OLE DB 源。

USE [DB]

SET FMTONLY OFF;

DECLARE @table_data TABLE 
                    (
                        column_01 VARCHAR(255),
                        column_02 VARCHAR(10),
                        column_04 VARCHAR(255)
                    )

SELECT 
    'column_01',
    'column_02',
    'column_03'
UNION ALL 
        column_01,
        column_02,
        column_03
FROM 
    @table_data

当我尝试运行脚本时,出现以下错误:

SSIS:在数据源中找不到列“column_01”

我尝试将ValidateExternalMetaData 设置为打开,但出现错误 (failed validation and returned validation status "VS_NEEDSNEWMETADATA")。

OLE DB 源正在将数据转储到动态文本文件中。

我不知道如何解决这个问题,也不明白为什么 SSIS 不允许我使用它。

【问题讨论】:

    标签: sql sql-server ssis


    【解决方案1】:

    您的代码不会产生错误;见here

    不过,我怀疑您希望您的结果包含带有 names 的列。但它们只是匿名字符串。你想要什么还不清楚。也许:

    SELECT 'column_01' as column_01, 'column_02' as column_02,
           'column_03' as column_03
    FROM @table_data;
    

    或者您可能想要表中的值而不是常量字符串值:

    SELECT column_01, column_02,column_03
    FROM @table_data;
    

    【讨论】:

    • 我更新了我的 sql 代码。我犯了一个错误...我尝试为我的所有列添加一个别名,但仍然无法在数据源中找到它
    【解决方案2】:

    我尝试如下。它工作正常,没有任何错误。

    USE [DB]
    
    SET FMTONLY OFF;
    
    DECLARE @table_data TABLE 
                        (
                            column_01 VARCHAR(255),
                            column_02 VARCHAR(10),
                            column_04 VARCHAR(255)
                        )
    
    INSERT INTO @table_data
    SELECT 'column_01','column_02','column_03'
    
    SELECT * FROM @table_data
    

    【讨论】:

      【解决方案3】:

      联合后你必须使用select 像这样:

      USE [DB]
      
      SET FMTONLY OFF;
      
      DECLARE @table_data TABLE 
                          (
                              column_01 VARCHAR(255),
                              column_02 VARCHAR(10),
                              column_04 VARCHAR(255)
                          )
      
      SELECT 
          'column_01',
          'column_02',
          'column_03'
      
      UNION ALL 
      
      select
              column_01,
              column_02,
              column_03
      FROM 
          @table_data
      

      【讨论】:

        猜你喜欢
        • 2013-12-18
        • 2013-04-04
        • 1970-01-01
        • 2012-04-08
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多