Mar*_*son 2 sql-server sql-server-2005
我正在对一个讨厌的存储过程进行故障排除,并注意到在运行它之后,我已经关闭了我的会话,许多临时表仍然留在tempdb中.它们的名称如下:
#000E262B
#002334C4
#004E1D4D
#00583EEE
#00783A7F
#00832777
#00CD403A
#00E24ED3
#00F75D6C
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码:
if object_id('tempdb..#000E262B') is null
print 'Does NOT exist!'
Run Code Online (Sandbox Code Playgroud)
我明白了:
Does NOT exist!
Run Code Online (Sandbox Code Playgroud)
如果我做:
use tempdb
go
drop TABLE #000E262B
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Msg 3701, Level 11, State 5, Line 1
Cannot drop the table '#000E262B', because it does not exist or you do not have permission.
Run Code Online (Sandbox Code Playgroud)
我作为sysadmin连接到SQL Server.使用SP3 64位.我目前在tempdb中有超过1100个这样的表,我无法摆脱它们.数据库服务器上没有其他用户.
在我的情况下,停止和启动SQL Server不是一个选项.
谢谢!
http://www.sqlservercentral.com/Forums/Topic456599-149-1.aspx
如果经常使用临时表或表变量,那么SQL只是"截断"它们而不是删除它们,而是留下定义.它节省了下次需要时重新创建表的工作量.