这里有新鲜出炉的 SQL Server 教程,程序狗速度看过来!
SQL 是英文 Structured Query Language 的缩写,意思为结构化查询语言。SQL 语言的主要功能就是同各种数据库建立联系,进行沟通。按照 ANSI(美国国家标准协会) 的规定,SQL 被作为关系型数据库管理系统的标准语言。
SQL Server 即 Microsoft SQL Server 。
这篇文章主要介绍了 SQL Server 2016 里的 sys.dm_exec_input_buffer 的相关资料, 需要的朋友可以参考下
我们都知道 DBCC 命令有点尴尬,因为你不能在 T-SQL 查询里调用它们,你也不能关联它们的输出到其它 DMV/DMF。例如你想为每个用户会话返回最后一个执行的 SQL 语句....
sys.dm_exec_input_buffer
在 SQL Server 2016 里,事情就变得简单多,因为微软为你提供了一个新 DMFsys.dm_exec_input_buffer,它和 DBCC INPUTBUFFER 一样做同样的工作。
使用 sys.dm_exec_input_buffer 非常简单:这个 DMF 需要 2 个输入参数——会话和指定会话的请求 id。下面代码展示了调用新函数的简单例子。
- SELECT * FROM sys.dm_exec_input_buffer(55, 0)
- GO
但你可以做更复杂的事情,像用 CROSS APPLY 运算符与其它 DMV 关联信息。我们来看下面的代码。
- SELECT
- r.session_id,
- ib.event_info
- FROM sys.dm_exec_requests r
- JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id
- CROSS APPLY sys.dm_exec_input_buffer(r.session_id, r.request_id) ib
- WHERE
- s.is_user_process = 1
- GO
如你在这里看到的,这个查询对于所有当前执行的查询,返回所有提交的 SQL 语句。很简单,是不是?
来源: http://www.phperz.com/article/17/0821/339333.html