0

目前,我们有一个查询可以预测直接借记产品的收入。此查询使用与临时表相对的永久表,因为该查询使用动态 SQL,并且在该动态 SQL 执行范围之外无法看到临时表。

我想要做的是使用全局临时表将它们放入存储过程中,以解决临时表超出范围的问题。我的问题是,如果它们永远不会并行运行,并且只有在存储过程像普通临时表一样运行后才会按顺序删除这些全局临时表?或者因为它们是全局的,它们会留在 tempdb 中吗?

另请注意,我已经研究过 insert into table 方法,但遗憾的是,根据我在下面的评论,我们使用大约 1000 个表来创建最终输出。

4

1 回答 1

0

这详细说明了 Flicker 的评论。文档是:

当创建表的会话结束并且所有其他任务都停止引用它们时,将自动删除全局临时表。任务和表之间的关联仅在单个 Transact-SQL 语句的生命周期内维护。这意味着在创建会话结束时主动引用表的最后一个 Transact-SQL 语句完成时,将删除全局临时表。

因此,这些似乎可以满足您的需求。

我对为此目的使用全局临时表并不感到兴奋。但它们似乎确实满足您的需求。好吧,当存储过程完成时,它们不会被删除,只是在会话结束时。您可以在定义表时使用动态 SQL 来强制执行此操作。

于 2016-04-21T03:03:46.420 回答