当说到跟踪SQL语句,有人可能会问起这个功能,也许有人会想到用审计功能,为了跟踪SQL语句,去启用审计功能,会成为一种浪费,或许用户只是想跟踪某一个连接的所有SQL语句呢?

请看简单的示例:


  1. 1> set tracefile "d:/abc.txt"  
  2. 2> go  
  3. 1> set show_sqltext on  
  4. 2> set statistics io on  
  5. 3> go  
  6. 1> select * from t123  
  7. 2> go  
  8.  id          col2  
  9.  ----------- --------------------------------  
再打开d:\abc.txt,内容如下:



  1. ================================================================================  
  2.     Application Tracing report for spid 26 from application "isql"   
  3.     run by login "sa" on host "SEAN-E6400"  
  4.     Tracing started on 2013/02/07 05:15:34.48  
  5. ================================================================================  
  6.   
  7. 2013/02/07 05:15:50.70   
  8. No useful sqltext available.  
  9. Total writes for this command: 0  
  10. End of Batch 4  
  11.   
  12. 2013/02/07 05:15:55.28   
  13. SQL Text: select * from t123  
  14.   
  15. Table: t123 scan count 1, logical reads: (regular=1 apf=0 total=1), physical reads: (regular=0 apf=0 total=0), apf IOs used=0  
  16. Total writes for this command: 0  
  17. End of Batch 5  

这样看来,还是蛮方便的,索引把上边的on/off开关选项,常用的都列到这里:


1. set show_sqltext  
2. set showplan  
3. set statistics io  
4. set statistics time  
5. set statistics plancost

需要说明的是:

set tracefile “” for 这是跟踪对应的连接的所有SQL语句

set tracefile ""只跟踪当前连接的所有SQL语句。

set tracefile on/off (启用或关闭)

当然,dbcc traceon(100) 也会输出一些跟踪的结果在服务器端。

12-20 14:50