何时在SSIS中使用全局Temp表而不是本地临时表?

时间:2018-04-11 09:00:43

标签: sql-server ssis

何时在本地临时表中使用SSIS中的全局临时表?我知道SQL使用方面的差异,但是在SSIS中实现哪个更喜欢哪种情况?

1 个答案:

答案 0 :(得分:0)

MS SQL临时表的小理论回顾:

  • 全局临时表 - 您创建它,填充/选择,删除它。表保留在TempDB中,并且当引用该表的所有用户与SQL Server实例断开连接时,表将被删除。表可以通过其他连接/会话访问。
  • 本地临时表 - 您可以创建它并在连接会话中使用。关闭连接会话时,表会自动删除。

因此,如果您需要存储仅适用于您的作用域的内容,则本地表更好,因为它会在您关闭会话时自动删除。如果需要在会话/进程之间传递数据,则全局表更好。全局临时表的缺点 - 您必须确保它在创建时不存在,在完成后丢弃等。

关于临时表和SSIS。 SSIS通常使用DB - 执行SQL 任务为每个操作打开一个新连接。在数据流中,它会为每个组件打开新连接。因此,只能在一个任务/数据流组件中访问本地Temp表。在此类会话模式中,您有以下选项:

  • 执行SQL 任务的一个命令中使用本地临时表。另一个任务意味着另一个连接,本地临时表被删除。
  • 创建时使用全局临时表和检查表存在,之后删除表等。
  • 使用本地临时表并设置相关Connection Manager的RetainSameConnection=true属性。此设置意味着执行执行SQL 任务后SSIS不会断开连接。在某些情况下,SSIS仍可能打开另一个连接。有关如何使用它的更多详细信息 - 请参阅similar question