SSIS软件包在源表上进行修改时正在执行



我使用简单的DFT创建了一个SSIS软件包,并将文件从OLEDB源传输到OLEDB目标。当我在源表软件包中添加新列时,仍将成功执行,但我希望我的软件包失败。任何人都可以建议如何修复它。

在控制流动区域中,在DFT之前添加Execute SQL Task。设置与数据库的连接,并为您的sqlStatement使用以下内容:

CREATE TABLE #temp (<define all columns currently in your OLEDB Source Table>)
INSERT INTO #temp 
SELECT TOP 1 * 
FROM <your OLEDB Source Table>

通过使用此"最糟糕的练习"插入语法,如果您的OLEDB源表已添加或删除任何列,则可能会导致故障。

在OLEDB源中选择表时,表的元数据映射到OLEDB Source组件。

每次您运行的软件包,都会将SELECT * From Table命令发送到SQL Server,并检索数据,并且将将每个列从SQL表映射到OLEDB Source列。

如果在SQL中找到了列,并且在OLEDB Source中未定义它将被忽略。另一方面,如果在SQL中找不到列,并且在OLEDB Source中定义了一个例外。

在运行软件包之前验证元数据的唯一方法是添加Execute SQL TaskScript Task在执行DFT之前检查元数据。

参考

  • SSIS OLE DB源编辑器数据访问模式:" SQL命令"与"表或查看"
  • OLEDB来源

相关内容

  • 没有找到相关文章

最新更新