【问题标题】:Error in Execute SQL Task when Updating Master Table comparing with Temp Table in SSIS与 SSIS 中的临时表相比,更新主表时执行 SQL 任务出错
【发布时间】:2012-05-17 10:59:43
【问题描述】:

我已经用 Lookup 分隔匹配行,并通过 ODLEDB Destination 将匹配的数据存储到临时表中。

完成数据流任务后,Execute SQL Task 出现错误。

属性设置为
ResultSet: "NONE";
ConnectionType:"OLEDB";
Connection:"myDatabase";
SQLType: "Direct Input"

SQL 语句

Update dbo.[Payment_Transaction] 
SET pt.[Date] = tt.[Date], pt.[FromCurrency]=tt.FromCurrency], pt.[ToCurrency]=tt.[ToCurrency], pt.[TransRate]=tt.[TransRate], pt.[TransType] =tt.[TransType], pt.[TransAmount]=tt.[TransAmount] 
FROM dbo.[Payment_Transaction] pt INNER JOIN  [##temp_table] tt ON pt.[ID] = tt.[ID]

得到错误
"Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly"

任何人都可以在可能拧干的地方遮住任何灯吗?

谢谢,

贾希德

【问题讨论】:

  • 什么是 [##temp_table] ?它是在前面的任何步骤中创建的吗?
  • 您是否尝试过仅在 SSMS 中执行所有语句?如果一切正常,您可以尝试配置 Sql Server 日志以获得完整的错误描述。我怀疑您的全局临时表在您尝试加入时已被删除。为了防止这种情况,您可以尝试将 RetainSameConnection 设置为连接管理器的 true 属性
  • 如果马里奥的建议不起作用,我认为这个答案可能会对您有所帮助。 stackoverflow.com/a/51769262/1169697

标签: ssis


【解决方案1】:

您好,我猜是 tmp 表相关,所以... 尝试在连接管理器上设置 RetainSameConnection=TRUE 并在所有使用临时表的任务上设置 DelayValidation=TRUE。设置 RetainSameConnection=TRUE 可确保临时表在创建它的任务完成后不会消失。设置 DelayValidation=TRUE确保任务在创建表之前不会尝试检查表是否存在。”

http://consultingblogs.emc.com/jamiethomson/archive/2006/11/19/SSIS_3A00_-Using-temporary-tables.aspx

干杯,马里奥

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多