当我在 tempdb 中查询表格时,我得到一个很长的列表,其中一些已超过6个月。我想删除它们,但是当我尝试时我收到消息
不能删除表'#A0033175',因为它不存在或你这样做 没有许可。
我猜是因为这个表属于其他用户,即使SA用户也不能删除它。有没有办法让那些旧桌子掉线?我认为他们的会议结束时必须将他们删除。
SQL Server 2012(SP3)
答案 0 :(得分:1)
表名实际上类似于#abc _____ 012345,其中除了#ab;'名称部分之后的初始字符之外的所有内容都由SQL Server添加,以使该表对创建它的会话唯一。这样,proc可以在多个会话(窗口)中运行,并且临时表不会相互踩踏。
要摆脱这些临时表,请确保会话已关闭。通常有人可能在没有关闭SSMS的情况下回家,留下了一堆打开临时表的Windows。杀死会话将导致SQL Server删除临时表。你可能有一个很长时间运行的查询(可能是某种问题)已经运行了几个月,因此它创建的临时表仍然存在。小心杀戮会话 - 你可以让自己非常不受欢迎,如果你杀了错误的'会话。
这适用于名称前面带有一个#符号的表格。双##符号表示从所有会话中可见的表,SQL Server不会更改名称以使表名唯一。