我有一个SQL任务,它创建一个临时表,然后是一个从该临时表中选择的数据流任务。一切都运行良好和花花公子,但当我向SQL任务添加一个参数时,数据流任务失败,说没有创建临时表。硬编码参数值有效。
保留相同的连接选项为true,设置了元数据,并且我的Int32变量被映射为名称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
所以带参数的东西似乎搞乱了临时表的创建。
由于
对查询使用String变量表达式。这就是它的方式。
"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
感谢大家的帮助。
答案 0 :(得分:0)
有时奇怪。但是如果我们创建全局临时表(## TempT)
就可以解决