我正在研究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不允许我使用此问题。
答案 0 :(得分: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;
答案 1 :(得分:1)
我试图像波纹管一样。它正在正常工作,没有任何错误。
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
答案 2 :(得分:1)
合并后,您必须使用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