SQL服务器是否会在一段时间的不活动后自动清除这些内容,还是需要我手动清除?如果需要手动清除,请问如何查询要清除的表格列表?
SQL服务器是否会在一段时间的不活动后自动清除这些内容,还是需要我手动清除?如果需要手动清除,请问如何查询要清除的表格列表?
虽然临时表在连接终止时被删除,但通常仍被视为良好的实践,在确保清理已完成的情况下显式地删除这些表。
例如,如果您的平台使用连接池,即连接可能永远不会断开,那么您的临时表是否仍然存在?
为了检查临时表是否存在,可以使用以下语句/检查。
if object_id('tempdb..##temptbl') is not null
begin
drop table ##temptbl
end
当您关闭与 SQL Server 的连接时,本地临时表将被销毁。在正常情况下,没有必要手动清除它们。如果您保持持久连接或连接池,则可能需要养成立即在使用后删除临时表的习惯。
另一方面,全局临时表可以被给定数据库中的所有用户看到,因此它们将随着最后一个引用它们的连接一起被销毁。
回答你问题的第二部分,要查询需要清除的表格列表,请尝试以下查询:
SELECT * FROM tempdb..sysobjects
由于大多数用户通过搜索引擎来寻找问题的答案,因此本文将介绍如何在SQL Server 2016及更高版本中删除全局临时表:
DROP TABLE IF EXISTS ##tempTable;