sys.dm_exec_input_buffer (Transact-SQL)
适用于:SQL Server 2014 Azure SQL 数据库 Azure Synapse Analytics Platform System (PDW)
返回有关提交到 SQL Server 实例的语句的信息。
语法
sys.dm_exec_input_buffer ( session_id , request_id )
参数
session_id执行要查找的批处理的会话 ID。 session_id较小。 session_id 可以从下列动态管理对象中获得:
从 sys.dm_exec_requests request_id request_id。 request_id为 int。
返回的表
列名称 | 数据类型 | 描述 |
---|---|---|
event_type | nvarchar(256) | 给定 spid 的输入缓冲区中的事件类型。 |
参数 | smallint | 为语句提供的任何参数。 |
event_info | nvarchar(max) | 给定 spid 的输入缓冲区中的语句文本。 |
权限
在 SQL Server 上,如果用户具有 VIEW SERVER STATE 权限,则用户将在 SQL Server 实例上看到所有正在执行的会话;否则,用户将只看到当前会话。
重要
在没有 VIEW SERVER STATE 权限(如触发器、存储过程或函数中)的情况下,在 SQL Server Management Studio 外部运行此 DMV 会对 master 数据库引发权限错误。
在SQL 数据库,如果用户是数据库所有者,则用户将在SQL 数据库上看到所有正在执行的会话;否则,用户将只看到当前会话。
重要
在没有所有者权限 Azure SQL 数据库(例如触发器、存储过程或函数中)的情况下,在 SQL Server Management Studio 外部运行此 DMV 会针对 master 数据库引发权限错误。
SQL Server 2022 及更高版本的权限
要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。
注解
可以通过执行 CROSS APPLY,将此动态管理功能与sys.dm_exec_sessions或sys.dm_exec_requests结合使用。
示例
A. 简单示例
以下示例演示如何将会话 ID(SPID)和请求 ID 传递给函数。
SELECT * FROM sys.dm_exec_input_buffer (52, 0);
GO
B. 使用交叉应用于其他信息
以下示例列出用户会话的输入缓冲区。
SELECT es.session_id, ib.event_info
FROM sys.dm_exec_sessions AS es
CROSS APPLY sys.dm_exec_input_buffer(es.session_id, NULL) AS ib
WHERE es.is_user_process = 1;
GO