【问题标题】:Unable to use local temp table inside SSIS package无法在 SSIS 包中使用本地临时表
【发布时间】:2023-04-01 13:21:01
【问题描述】:

我有一个要求,我需要在 SSIS 包中创建一个本地临时表并填充它,然后在数据流中使用它。为此,我从 POC 开始,在其中创建了执行 sql 任务中的临时表并填充它,稍后使用临时表中存在的值并填充物理表。我跟随网络并设置保持相同的连接为真,离线工作和所有。但是我只能对全局临时表执行此操作,当我放置本地临时表时,我在 oledb 源处收到错误消息,说找不到#ABC.. tmp 文件。任何建议,为什么它不起作用本地表。

【问题讨论】:

  • 临时表是否由引发错误的同一连接创建?
  • 是的,我在包中只使用一个连接,它指向 db,需要在其中创建本地临时表并且物理表在那里。它对于全局临时表工作正常,但是当我使用本地临时表时失败。
  • 当你说你“关注了网络”时,你能把你关注的文章的链接发上来吗?
  • 您可以设置数据流延迟验证="True" ..在这种情况下它可以工作
  • 如果没有太多数据并且不需要索引,那么您可以存储到本地 SSIS 变量中。以下是你写信的方式:msdn.microsoft.com/en-AU/library/cc879316(v=sql.105).aspx;这是您读回的方式:timmitchell.net/post/2015/04/20/…。您能进一步解释为什么需要存储中间记录集吗?可能还有另一种方法可以做到这一点

标签: sql-server ssis sql-server-2012 ssis-2012


【解决方案1】:

您可以设置数据流任务适当延迟验证='True'

【讨论】:

    【解决方案2】:

    在您的数据库连接管理器上转到属性,有一个设置“RetainSameConnection”将其更改为 True。

    【讨论】:

    • 谢谢 Inus C,我已经做到了。我唯一想知道的是,当我在另一个数据库上创建本地临时表时,它可以在整个包中工作,但是当我在同一个连接上创建它时(数据库) ,它在 DFT 内部失败了,我想知道为什么会发生这种情况
    • 我不知道为什么,也许第一个连接仍然打开,但是在尝试引用临时表时创建了一个新连接。可以尝试使用##TempTable 而不是#TempTable。如果那是你所拥有的。如果我说的是真的(不确定是不是),那么它应该可以工作。希望这是有道理的。
    • 它正在与 ##TempTable 一起使用,但问题是当我使用 #TempTable 时,该表无法识别。
    【解决方案3】:

    将连接管理器中的 MARS 连接属性设置为 TRUE

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 2023-03-11
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多