SQL Server会在给定的不活动时间后自动清除这些内容吗?或者我是否需要担心自动清除它们?如果是这样,我如何查询要清除的表列表?
答案 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
这将列出所有当前的全局临时表