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

Jef*_*eff 20 sql-server temp-tables

SQL服务器是否在给定长度不活动后自动清除它们,还是需要担心自动清除它们?如果是这样,我如何查询要清除的表列表?

Joh*_*som 26

尽管在连接终止时删除了临时表,但通常仍然认为明确删除这些表是一种好习惯,以便绝对地进行某些清理.

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

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

if object_id('tempdb..##temptbl') is not null
begin
    drop table ##temptbl
end
Run Code Online (Sandbox Code Playgroud)


vez*_*ult 16

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

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

  • 我认为这对于全局临时表来说是不正确的; 我相信全局临时表(## MyTempTable)需要被清除,而对于普通的临时表(#MyTempTable)你所说的应用....对吗? (7认同)