Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2005中的临时表未自动删除_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server SQL Server 2005中的临时表未自动删除

Sql server SQL Server 2005中的临时表未自动删除,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我正在对一个讨厌的存储过程进行故障排除,并注意到在运行它之后,我已经关闭了会话,tempdb中仍然保留了许多临时表。它们的名称如下: #000E262B #002334C4 #004E1D4D #00583EEE #00783A7F #00832777 #00CD403A #00E24ED3 #00F75D6C 如果我运行此代码: if object_id('tempdb..#000E262B') is null print 'Does NOT exist!' 我得到: Does NO

我正在对一个讨厌的存储过程进行故障排除,并注意到在运行它之后,我已经关闭了会话,tempdb中仍然保留了许多临时表。它们的名称如下:

#000E262B
#002334C4
#004E1D4D
#00583EEE
#00783A7F
#00832777
#00CD403A
#00E24ED3
#00F75D6C
如果我运行此代码:

if object_id('tempdb..#000E262B') is null   
print 'Does NOT exist!'
我得到:

Does NOT exist!
如果我这样做:

use tempdb
go
drop TABLE #000E262B
我得到一个错误:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table '#000E262B', because it does not exist or you do not have permission.
我以系统管理员的身份连接到SQL Server。使用SP3 64位。我目前在tempdb中有1100多个这样的表,我无法摆脱它们。数据库服务器上没有其他用户

在我的情况下,停止和启动SQL Server不是一个选项


谢谢

使用前缀创建的表仅对当前连接可用。因此,您创建的任何新连接都将无法看到它们,因此无法删除它们

你怎么知道它们仍然存在?您正在运行什么命令来查找此问题

创建它们的连接是否正确关闭?如果不是,这可能就是它们仍然存在的原因


如果经常使用临时表或表变量,那么SQL不会删除它们,而是“截断”它们,留下定义。它节省了下次需要时重新创建表的工作量。

您在哪里看到表仍然存在?使用tempdb go select*from INFORMATION_SCHEMA.tables谢谢-但我是此数据库实例的唯一用户。创建这些表的连接已断开。请说明如何才能看到这些表仍然存在?这是使用sp_表吗?从sysobjects中选择*?非常感谢-因此论坛帖子向我确认表是表变量的结果,优化器决定保留它们,因为它们经常被引用。我仍然希望消除它们,以消除我遇到的性能问题。删除一个表或让它超出范围实际上并不会立即删除它。您的批处理知道您已经删除了它,因此您无法再引用它,但它仍然存在。有一个后台进程来处理实际的丢弃过程。也许可以查看计数器临时表的销毁情况,看看这是否真的是性能问题的根源。您可以在“监视和故障排除”一节中找到有关这方面的详细信息。很多滚动:谢谢Aaron。24小时后,tempdb中出现了相同数量的表,但是我已断开了与数据库服务器的所有用户连接。我检查了您发布的那篇优秀文章中的性能计数器,要销毁的临时表的数量在12个多小时内一直为零。