利用动态管理视图提高SQL Server索引效率(三)

日期: 2009-02-12 作者:Baya Dewald翻译:April 来源: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 stateme……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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
Baya Dewald

Baya Dewald,数据库咨询师,主要帮助客户用SQL Server和Analysis Services开发高可用的和升级应用软件。在他的职业生涯中,他负责过管理过数据库管理员团队等工作。Baya主要专攻领域有:性能调优、复制和数据仓储。你可以通过baya@bayasqlconsulting.com跟他联系。

翻译

April
April

相关推荐