在SQL Server中删除全局临时表(## tempTable)

时间:2009-03-27 04:14:19

标签: sql-server temp-tables

SQL Server会在给定的不活动时间后自动清除这些内容吗?或者我是否需要担心自动清除它们?如果是这样,我如何查询要清除的表列表?

3 个答案:

答案 0 :(得分:24)

尽管在连接终止时删除了临时表,但显然删除这些表仍然被认为是一种良好的做法,以便绝对清除某些表。

例如,如果您的平台使用连接池,即连接可能永远不会被删除,那么您的临时表是否仍然存在?

为了检查是否存在临时表,您可以使用以下语句/ check。

if object_id('tempdb..##temptbl') is not null
begin
    drop table ##temptbl
end

答案 1 :(得分:16)

关闭与SQL Server的连接时会破坏本地临时表。在正常情况下无需手动清除它们。如果您维护持久连接或连接池,您可能希望在使用后立即删除临时表。

另一方面,全局临时表由于它们对给定数据库中的所有用户可见,因此会与引用它们的最后一个连接一起销毁。

答案 2 :(得分:4)

在回答问题的第二部分时,要查询要清除的表列表,请尝试以下查询:

SELECT * FROM tempdb..sysobjects

这将列出所有当前的全局临时表