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

另请参阅