【问题标题】:SSIS SQL Task with parameters not creating temp table带有参数的 SSIS SQL 任务不创建临时表
【发布时间】:2014-12-15 18:35:44
【问题描述】:

我有一个创建临时表的 SQL 任务,然后是一个从该临时表中选择的数据流任务。一切正常,花花公子,但是当我向 SQL 任务添加参数时,数据流任务失败,说临时表没有创建。硬编码参数值有效。

retain same connection 选项为 true,元数据已设置,并且我的 Int32 变量映射为名称 0 和 1,大小为 -1 用于 oledb。

我已经设法在较小的范围内复制它

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 更改为变量

感谢大家的帮助。

【问题讨论】:

  • 我也一直想知道关于 SSIS 的 TEMP 表的问题。我在某处读到它们可能由于某种原因在 2012 年无法工作。希望有人给出一个可靠的解释。
  • 是的,希望如此。虽然我在 2010 年工作。我只是将sql源作为变量尝试过,它似乎可以工作。不过,我宁愿不这样做。
  • 我在 2012 年遇到了同样的错误,2010 年没有尝试过。在 2008 年,临时表在通过数据流任务执行的过程中运行良好。
  • 为什么将项目加载到#table 中,然后从临时表中提取 DFT?您不能只使用填充#table 的查询吗?或者可能把它变成一个存储过程?
  • 我记得遇到过这个问题。我没有使用 temp,而是创建了一个表并在完成后将其删除。

标签: sql sql-server ssis dataflowtask


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2017-12-17
    相关资源
    最近更新 更多