带参数的 SSIS SQL 任务不创建临时表

问题描述 投票:0回答:2

我有一个创建临时表的 SQL 任务,然后是一个从该临时表中进行选择的数据流任务。一切工作正常,但当我向 SQL 任务添加参数时,数据流任务失败,提示未创建临时表。对参数值进行硬编码是可行的。

“保留相同连接”选项为 true,设置了元数据,并且我的 Int32 变量被映射为 long,名称为 0 和 1,大小为 oledb 的 -1。

我已经成功地以较小的规模复制了它

SQL 任务

DECLARE @Yesterday DATETIME
DECLARE @Today DATETIME

DECLARE @StartDisposition INT = ?
DECLARE @EndDisposition INT = ?

SET @Yesterday = CONVERT (date, DATEADD(day, @StartDisposition, GETDATE()))
SET @Today = CONVERT (date, DATEADD(day, @EndDisposition, GETDATE()))

SELECT @StartDisposition AS A, @Yesterday AS B, @Today AS C INTO #TempT

数据流任务,或者只是用于此目的的 SQL 任务

SELECT * FROM #TempT

因此参数的某些内容似乎搞乱了临时表的创建。

谢谢

使用字符串变量表达式进行查询是有效的。事情是这样的。

"DECLARE @Yesterday DATETIME
DECLARE @Today DATETIME

DECLARE @StartDisposition INT = " + (DT_STR, 20, 1252)@[User::StartDisposition] + "
DECLARE @EndDisposition INT =  " + (DT_STR, 20, 1252)@[User::EndDisposition] + "

SET @Yesterday = CONVERT (date, DATEADD(day, @StartDisposition, GETDATE()))
SET @Today = CONVERT (date, DATEADD(day, @EndDisposition, GETDATE()))

SELECT @StartDisposition AS A, @Yesterday AS B, @Today AS C INTO #TempT"

然后在 SQL 任务中将 SQLSourceType 更改为 Variable

谢谢大家的帮助。

sql sql-server ssis dataflowtask
2个回答
0
投票

有时很奇怪。但是如果我们创建全局临时表(##TempT)就可以解决


0
投票

我知道这是一篇旧文章,但您可以通过在加载表的任务之前在 SQL 任务中单独创建临时值来解决此问题。使用参数执行 SELECT INTO #temp 似乎有问题,但是使用参数执行 INSERT #temp 时有效。

© www.soinside.com 2019 - 2024. All rights reserved.