SSIS ado.net源中的临时表

时间:2013-07-10 00:54:46

标签: ssis

我只能在OLE DB源中找到使用临时表的解决方案。 但我找不到ADO.NET源码的解决方案。如何在SSIS包中的ADo.NET源中成功使用临时表?

1 个答案:

答案 0 :(得分:3)

我觉得在SSIS中使用临时表会比通常更值得痛苦。我希望你的经历更好。

创建ADO.NET连接。在Connection Manager的属性中,将RetainSameConnection的值从false设置为true。这将允许创建的临时表在包执行期间存在,方法是阻止连接池交换线程。

我的麻烦来自于正确设置元数据。为了解决这个问题,我创建了一个变量QuerySource,用于查询反映临时表外观的物理表。 SELECT S.src_id, S.src_value FROM dbo.SRC AS S;这允许数据流为下游组件建立正确的元数据。我在ADO.NET源中手动使用此查询。完成后,我需要更改查询以使用临时表##SRC。与OLE DB Source组件不同,您无法在数据流任务中设置此属性。

完成数据流工作后,返回控制流程,查看Data Flow Task的属性。将延迟验证从false更改为true。这将阻止在我们删除非临时表“scaffolding”时需要进行的任何设计时验证。接下来找到表达式并单击省略号(...)。在下拉列表中,您应该看到ADO.NET源的名称。我已经重命名了,所以我在下拉列表中看到[ADONET Src]。[TableOrViewName]和[ADONET Src]。[SqlCommand]。我选择了[ADONET Src]。[SqlCommand],作为我的价值,我使用了@[User::SrcQuery]

我运行包以确保它仍然有效。它做了。然后我将查询的值更改为SELECT S.src_id, S.src_value FROM ##SRC AS S;我重申,这次它正确地从临时表中提取数据。

如果您使用SQL Server 2012作为源代码,则可以使用EXECUTE语句的WITH RESULT SETS选项显式描述临时表元数据,从而使自己更容易。