我正在尝试在SSIS中开发一个包。包的逻辑相对简单:执行查询并将结果集保存在Excel电子表格中。因此,我首先尝试创建如下所示的架构: -
我面临的问题是查询使用临时表,OLE DB Source似乎无法解析包含临时表(#table-names)的查询。
所以我尝试在控制流中使用执行SQL任务。这似乎能够执行此查询。但现在我想获取整个结果集并将其保存在动态命名的Excel电子表格中。 我知道创建一个临时表是一个解决方案,但我不能使用它,因为客户不会对它感到高兴。 我已经尝试将结果集保存在变量中,但即使我无法从OLEDB源中读取。 谁能请你给我这个建议。如果您想要任何澄清,请做出评论。
由于
答案 0 :(得分:0)
我会将临时表逻辑移动到公用表表达式(CTE),例如
WITH CTE_temp AS (
<< select statement that populates your temporary table >>
)
SELECT
<< select statement from your temporary table>>
FROM CTE_temp
CTE可以构建在其他CTE的顶部,并且可以是递归的。通过一些横向思维,他们覆盖了99.9%的临时桌面解决方案。
CTE可以并行运行而不会出现争用问题。它们通常也比临时表解决方案更快。
答案 1 :(得分:0)
这可以使用定义的连接管理器的“RetainSameConnection”属性来实现。 (当您创建临时变量时,连接关闭时临时变量将被删除...)