有没有办法获取SQL Server中所有当前临时表的列表?

AAs*_*Ask 61 sql sql-server sql-server-2000 temp-tables

我意识到临时表是会话/连接绑定的,不可见或可从会话/连接访问.

我有一个长期运行的存储过程,在各个阶段创建临时表.

有没有办法可以看到当前临时表的列表?我需要什么特权才能这样做?

或者,

有没有办法可以看到正在运行的存储过程中执行的特定SQL语句?该过程作为SQL Server中的计划作业运行.

我正在使用SQL Server 2000.

谢谢你的指导.

San*_*dro 94

这就是你追求的吗?

select * from tempdb..sysobjects
--for sql-server 2000 and later versions

select * from tempdb.sys.objects
--for sql-server 2005 and later versions
Run Code Online (Sandbox Code Playgroud)

  • 2008年:tempdb.sys.objects,2000年:tempdb..sysobjects (12认同)
  • 这列出了tempdb中的许多不同对象,包括索引和全局临时表.不应该选择作为答案 (5认同)

Upe*_*ari 8

您可以通过以下查询获取临时表列表:

select left(name, charindex('_',name)-1) 
from tempdb..sysobjects
where charindex('_',name) > 0 and
xtype = 'u' and not object_id('tempdb..'+name) is null
Run Code Online (Sandbox Code Playgroud)


FLI*_*KER 6

SELECT left(NAME, charindex('_', NAME) - 1)
FROM tempdb..sysobjects
WHERE NAME LIKE '#%'
    AND NAME NOT LIKE '##%'
    AND upper(xtype) = 'U'
    AND NOT object_id('tempdb..' + NAME) IS NULL
Run Code Online (Sandbox Code Playgroud)

如果要包含全局临时表,可以删除 ## 行。