检索目前执行的SQL语句 许多DBA已经用过SQL Server之前版本的DBCC INPUTBUFFER命令来获取已给出的链接执行的最后那个SQL语句。但是这个语句之返回了该语句最后的255个字符,可能不是整个句子。SQL Server 2005和2008提供了检索该信息的几个选项。sys.dm_exec_sql_text和sys.dm_exec_requests DMV应该通力合作,并且fn_get_sql()也应该和同一个sys.dm_exec_requests DMV进行关联,这是另一个获取最后语句的选项。
以下是示例: To find a stateme……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
检索目前执行的SQL语句
许多DBA已经用过SQL Server之前版本的DBCC INPUTBUFFER命令来获取已给出的链接执行的最后那个SQL语句。但是这个语句之返回了该语句最后的255个字符,可能不是整个句子。SQL Server 2005和2008提供了检索该信息的几个选项。sys.dm_exec_sql_text和sys.dm_exec_requests DMV应该通力合作,并且fn_get_sql()也应该和同一个sys.dm_exec_requests DMV进行关联,这是另一个获取最后语句的选项。
以下是示例:
To find a statement executed by a specific session (53): SELECT SUBSTRING(b.text, (a.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(b.text) ELSE a.statement_end_offset END - a.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_requests a CROSS APPLY fn_get_sql (a.sql_handle) b WHERE a.session_id = 53 To get SQL statements submitted by all running or suspended sessions: SELECT a.session_id, a.status, a.start_time, a.command, SUBSTRING(b.text, (a.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(b.text) ELSE a.statement_end_offset END - a.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_requests a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b WHERE a.status IN ('running', 'suspended') |
你可以在SQL Server联机丛书上找出fn_get_sql, sys.dm_exec_requests和sys.dm_exec_sql_text的详细信息。以上查询用statement_start_offset和statement_end_offset 列只检索目前执行的SQL语句,即使是存储程序或自定义函数中已经付带了。如果我们已经用DBCC INPUTBUFFER,那我们应该只能获取存储程序或自定义函数名称和执行参数。
作者
Baya Dewald,数据库咨询师,主要帮助客户用SQL Server和Analysis Services开发高可用的和升级应用软件。在他的职业生涯中,他负责过管理过数据库管理员团队等工作。Baya主要专攻领域有:性能调优、复制和数据仓储。你可以通过baya@bayasqlconsulting.com跟他联系。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。