【问题标题】:Temp Table created in one Execute SQL Task is not available in another Execute SQL Task in SSIS在一个执行 SQL 任务中创建的临时表在 SSIS 中的另一个执行 SQL 任务中不可用
【发布时间】:2018-08-09 10:01:52
【问题描述】:

我在一个执行 SQL 任务中创建了一个全局临时表,并将一些记录插入到该表中。在另一个执行 SQL 任务中调用结果时,它说对象名称无效。

请推荐

谢谢 萨西

【问题讨论】:

  • 您不能在另一个执行 SQL 任务中引用临时表。然后你必须制作一个真正的持久表。
  • 展示你的代码如何创建你的 temptable。以及如何在第二个sql任务中调用它
  • 我在一个执行 sql 任务中创建了一个 ##temp1,而在另一个执行 sql 任务中我正在执行类似的操作(插入 ##temp1 select * from mytable)错误是第二个无效对象 ##temp1执行sql任务
  • 是的,因为它与同一笔交易无关。所以要么你去一个持久化的表,要么你尝试 userfl89 的解决方案

标签: ssis


【解决方案1】:

如果您将两个执行 SQL 任务放在同一个序列容器中,并将序列容器上的TransactionOption 设置为Required,您可以从第二个执行 SQL 任务访问全局临时表。您可以将两个执行 SQL 任务的 TransactionOption 保留为默认的 Supported,因为它们将加入父序列容器的事务。

【讨论】:

  • 我收到以下错误错误:由于错误 0x8004D01B“事务管理器不可用”,SSIS 运行时无法启动分布式事务。 DTC 事务无法启动。这可能是因为 MSDTC 服务没有运行。
  • MS DTC 服务当前是否正在运行?您可以通过转到控制面板 > 管理工具 > 服务 > 来检查这一点,然后找到分布式事务协调器服务,如果它没有运行则启动它。
  • 在连接管理器中使用retain same connection true解决
【解决方案2】:

临时表的生命周期受限于与其关联的任务,因此您将无法像这样访问它。 您必须创建一个更持久的解决方案,或者以上述 userfl89 的方式处理它。

【讨论】:

    【解决方案3】:

    可以通过在连接管理器中使用 Retain same connection = true 来完成

    谢谢 萨西

    【讨论】:

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