使用SQL语句实现SQL Profiler的功能

转载 2012年03月29日 17:44:09

      SQL Profiler是个好东西。极大的方便了我们查看SQL语句的执行情况,也能帮助我们了解SQL的很多内部状态。那么除了运行SQL Profiler就没有其他方法可以实现了吗?当然不会,这里提供一个简单的示例以示说明:

1. 使用系统存储过程sp_trace_create建立一个Trace,这个SP可以在on-line help上找到

DECLARE @TraceIdOut int, @On bit, @rc int
-- Define the trace
exec @rc = sp_trace_create @TraceIdOut OUTPUT, 2, N'c:/sqlauditfile1'  --最后一个参数是最终Trace结果存放的位置
print @TraceIdOut  --打印Trace ID的目的是当需要停止该Trace时好知道该挺哪个

2. 使用系统存储过程sp_trace_setevent告知SQL所要监听的事件以及事件返回的信息,同样具体参数参看on-line help

SET @On = 1
exec sp_trace_setevent @TraceIdOut, 13, 1, @On --最后一个参数表明开始监听,这里很是奇特,该参数是bit型,但是直接传1不行,必须是一个bit型的变量。。。

--这个例子监听的是SQL:BatchCompleted事件,返回的是SQL最终执行的语句(TextData)

--如果想监听多个事件,或者需要返回多个信息,那么就多次执行该语句(不同的参数哦)

3. 使用系统存储过程sp_trace_setstatus让指定Trace开始运行
exec @rc = sp_trace_setstatus @TraceIdOut, @status = 1 

4.开始执行一些SQL语句。

 

5.执行差不多了,再次使用系统存储过程sp_trace_setstatus来停止Trace,并且关闭和删除这个Trace。

exec sp_trace_setstatus 1,0  --停止Trace
exec sp_trace_setstatus 1,2  --关闭和删除Trace

(

SELECT * FROM sys.traces  

id

int

追蹤識別碼。

status

int

追蹤狀態:

0 = 已停止

1 = 執行中



使用 sp_trace_setstatus 預存程序來停止某個追蹤,語法如下:

                                                                         
sp_trace_setstatus <欲停止追蹤的追蹤識別碼>, 0 


EG:

--print @TraceIdOut
--SELECT * FROM sys.traces  
--exec sp_trace_setstatus 2,0  --停止Trace
--exec sp_trace_setstatus 2,2  --关闭和删除Trace

之后则可以删除生成的跟踪文件

)


6.发现C盘下多了第一步建立的文件,用SQL Profilter打开看看吧。。。

注意:

1.如果不执行第5步,那么第一步建立的文件是打不开的。

2.SQL好像不能自行删除文件,也就是说如果文件存在,需要手工先行删除。

3.第一步打印Trace ID的目的是为了最后一步用,因为不在一起执行。。。

4.可以建立两个任务,第一个是一早执行,开始一个Trace;第二个是晚上执行,关闭Trace。那么客户一天的SQL语句执行情况都知道了。。

通过sql profiler捕获sql

最近某些客户反应在查询一些报表时比较慢,但是我查询了这些表,觉得并没有客户说的那么慢,于是,我猜测可能是当某些用户选择了较多的查询条件,而sql server产生了不够优化的执行计划才导致查询比较慢。...
  • yupeigu
  • yupeigu
  • 2016年12月22日 13:52
  • 1039

用 SqlProfiler 跟踪超时的语句

超时的语句, 直接用脚本无法查询其执行情况, 只能用 sqlprofiler 来跟踪了。 测试程序: using System; using System.Data.SqlClient; names...
  • yenange
  • yenange
  • 2017年02月20日 15:14
  • 708

SQL Profiler的简单使用

转载自:   一、SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询;在后台收集查询信息;分...
  • u010326424
  • u010326424
  • 2014年05月08日 19:37
  • 1099

SQL Server Profiler工具使用说明

SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询; 在后台收集查询信息; 分析性能; 诊断像死锁之类的问题; 调试T-SQL语句; 模拟重放...
  • LanMangFeiGe
  • LanMangFeiGe
  • 2017年06月27日 16:14
  • 1101

Oracle PL/SQL 性能分析工具 profiler 说明

一.说明Oracle提供了profiler工具包,利用该工具包可以查看PL/SQL执行过程中各模块的性能。可以从MOS上下载该脚本: Implementing andUsing the PL/SQL ...
  • tianlesoftware
  • tianlesoftware
  • 2012年02月08日 17:02
  • 8877

SQL server Profiler调试代码监控SQL语句

SQL server Profiler调试代码监控SQL语句
  • caikundashu
  • caikundashu
  • 2011年04月01日 09:36
  • 3603

SQL的优化与监视(SQL Server Profiler)

转:http://www.cnblogs.com/TivonStone/archive/2010/10/10/1847345.html 0.简介         SQL Serve...
  • wxwzy738
  • wxwzy738
  • 2013年07月03日 11:36
  • 2945

EF Profiler 查看跟踪Entity Framework SQL 语句

我们在用Entity Framework 开发调试的时候, 或者程序跑起来了,想追踪SQL 语句的时候, 可以使用这个工具 EntityFramework.Profiler 只需简单两步即可 ...
  • shan1774965666
  • shan1774965666
  • 2016年03月23日 15:08
  • 1112

SQLServer 利用profiler生成脚本在后台跟踪堵塞语句或慢查询语句

分享个SQLServer profiler 的一个技巧吧。很早用过,忘记总结了,现在再用时记录下来。 当启用 SQLServer profiler 跟踪sql语句的时候,是非常方便的,同时也可以按照各...
  • kk185800961
  • kk185800961
  • 2015年10月19日 18:09
  • 4061

EF Profiler 查看跟踪Entity Framework SQL 语句

我们在用Entity Framework 开发调试的时候, 或者程序跑起来了,想追踪SQL 语句的时候, 可以使用这个工具 EntityFramework.Profiler 只需简单两步即可 ...
  • gavin_luo
  • gavin_luo
  • 2015年01月06日 13:19
  • 7085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用SQL语句实现SQL Profiler的功能
举报原因:
原因补充:

(最多只允许输入30个字)