【发布时间】:2011-12-07 09:26:56
【问题描述】:
我正在使用 sql2000,我想在 sproc 实例或查询窗口中自动删除 #temp 表。这更多是出于测试目的而不是生产目的。有没有办法获取当前会话或 sproc 实例甚至查询实例,并使用它来仅删除该实例中的 #temp 表。我不想在其他情况下删除 #temp 表。
我注意到另一个 Stack Overflow 问题使用了这个code:
declare @sql nvarchar(max)
select @sql = isnull(@sql+';', '') +
'drop table ' + quotename(name) from tempdb..sysobjects
where name like '#%' exec (@sql)
我只想检测当前会话或实例中的#tmp 表。我还需要在 sql2008 中执行此操作。谢谢
谢谢。
【问题讨论】:
-
临时表超出范围时会自动删除。见stackoverflow.com/questions/892351/…
-
米奇,我正在查询窗口中进行测试。它们不会超出您正在测试的查询窗口的范围。所以我想加入一些代码,并删除所有#temp 表和walla ...不再有临时表。我不想每次都打开一个新的查询会话 b/c 我很懒。
-
那么我怀疑您使用的临时表不正确...您应该在不再使用临时表时删除它。
-
另一件事米奇,我非常依赖撤消,这是我尝试检测查询窗口会话并仅删除#temp 表的主要原因。 (即只有一个 #lb# 符号的那些。)
-
你一定误会了,我不想手动删除一张临时表。我想把它们全部扔掉。假设我有 50 个临时表,我想保留我的撤消功能,并且我想检测我当前的会话并删除我所有的临时表。 Walla... 没有 drop #temp1 drop #temp2 ....... 我愿意接受新的建议,但是如果你有更好的技术。
标签: sql-server sql-server-2008 sql-server-2000