【发布时间】:2011-08-11 18:43:12
【问题描述】:
[SSIS 2008 R2]
我的控制流如下所示:
截断 SSIS 服务器本地的数据库(例如 DB_Staging)中的暂存表 -->
通过数据流从外部 SQL Server(例如 DB_SOURCE)加载暂存表 -->
使用 T-SQL MERGE 查询在 staging 之间进行 UPDATE、INSERT 和 DELETE 表和 SSIS 服务器本地的不同数据库(例如 DB_DESTINATION)中的表
第三步,我有一个连接到 DB_DESTINATION 的数据流任务。此任务的数据流有一个 OLE DB 源设置为包含 T-SQL MERGE 语句的 SQL 命令(为简洁起见,查询被截断):
MERGE dbo.destination AS dest
USING (SELECT * FROM DB_STAGING.dbo.source) AS src
ON ...
WHEN MATCHED
AND ...
THEN UPDATE SET
...
WHEN NOT MATCHED BY TARGET
THEN INSERT
...
WHEN NOT MATCHED BY SOURCE
AND ...
THEN DELETE;
问题是,我在 OLE DB 源中的 T-SQL MERGE 查询中遇到验证错误。我是 SSIS 的新手,所以我不确定出了什么问题。正如我在 Management Studio 中测试过的那样,加载登台表和 MERGE 的查询工作。任何人都可以提供任何指导吗?来自 BIDS 的验证错误消息是:
验证错误。 DFT_MergeData OLEDB_DB_DESTINATION [1]:无列 信息由 SQL 命令返回。
【问题讨论】:
-
你说你在“数据流”任务上有
MERGE语句,对吗?因为它应该在“执行 SQL 语句”任务上
标签: sql-server-2008 ssis