You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找SQL Server 2019中指定临时表的创建用户?

查找SQL Server 2019中临时表的创建用户

问题原因

你之前用OBJECTPROPERTYEX(t.OBJECT_ID, 'OwnerId')得到的是tempdb数据库的所有者(通常是sa),而非临时表的实际创建用户——因为临时表在tempdb中的所有权默认继承自tempdb本身,并非创建它的会话用户。

解决方案

要获取临时表的实际创建用户,需要关联临时表的系统信息与会话、连接数据,可执行以下查询:

USE tempdb;

SELECT 
    s.session_id,
    s.login_name AS 创建用户,
    s.host_name,
    s.program_name,
    t.name AS 临时表名
FROM 
    sys.tables t
JOIN 
    sys.dm_db_session_space_usage su ON t.object_id = su.object_id
JOIN 
    sys.dm_exec_sessions s ON su.session_id = s.session_id
WHERE 
    t.name LIKE N'#Test123%';

关键说明

  • sys.dm_db_session_space_usage:用于关联临时表的对象ID与创建它的会话ID
  • sys.dm_exec_sessions:通过会话ID获取登录名(即临时表创建用户)、主机名、程序名等详细信息

注意事项

  • 若创建临时表的会话已关闭,临时表会被SQL Server自动删除,此时无法查询到相关信息
  • 临时表在tempdb中的实际名称会被系统追加后缀(例如#Test123________________00000000004C),因此使用LIKE N'#Test123%'进行匹配是正确的

内容的提问来源于stack exchange,提问作者Ullan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:57:18