【SQL Profiler】监控数据库服务器

如何用SQL Profiler监控服务器执行了哪些操作?

常规方法是在开始程序中,找到启动程序SQL Server Profiler启动然后执行监控,但这样做对生产型数据库带来严重性能影响,

通过使用以下存储过程,可以将监控得到的信息直接存储在硬盘文件中,可以把此文件拷贝到普通计算机上进行分析。

脚本如下:

  1. /****************************************************/  
  2. /* Created by: wxf163                    */  
  3. /* Date: 2010/10/31  06:12:00 PM         */  
  4. /****************************************************/  
  5.   
  6.   
  7. -- Create a Queue  
  8. declare @rc int  
  9. declare @TraceID int  
  10. declare @maxfilesize bigint  
  11. set @maxfilesize = 5   
  12.   
  13. -- Please replace the text InsertFileNameHere, with an appropriate  
  14. -- filename prefixed by a path, e.g., c:/MyFolder/MyTrace. The .trc extension  
  15. -- will be appended to the filename automatically. If you are writing from  
  16. -- remote server to local drive, please use UNC path and make sure server has  
  17. -- write access to your network share  
  18.   
  19. exec @rc = sp_trace_create @TraceID output,  2, N'e:/test.trc', @maxfilesize, NULL   
  20. if (@rc != 0) goto error  
  21.   
  22. -- Client side File and Table cannot be scripted  
  23.   
  24. -- Set the events  
  25. declare @on bit  
  26. set @on = 1  
  27. exec sp_trace_setevent @TraceID, 14, 1, @on  
  28. exec sp_trace_setevent @TraceID, 14, 9, @on  
  29. exec sp_trace_setevent @TraceID, 14, 6, @on  
  30. exec sp_trace_setevent @TraceID, 14, 10, @on  
  31. exec sp_trace_setevent @TraceID, 14, 14, @on  
  32. exec sp_trace_setevent @TraceID, 14, 11, @on  
  33. exec sp_trace_setevent @TraceID, 14, 12, @on  
  34. exec sp_trace_setevent @TraceID, 15, 15, @on  
  35. exec sp_trace_setevent @TraceID, 15, 16, @on  
  36. exec sp_trace_setevent @TraceID, 15, 9, @on  
  37. exec sp_trace_setevent @TraceID, 15, 17, @on  
  38. exec sp_trace_setevent @TraceID, 15, 6, @on  
  39. exec sp_trace_setevent @TraceID, 15, 10, @on  
  40. exec sp_trace_setevent @TraceID, 15, 14, @on  
  41. exec sp_trace_setevent @TraceID, 15, 18, @on  
  42. exec sp_trace_setevent @TraceID, 15, 11, @on  
  43. exec sp_trace_setevent @TraceID, 15, 12, @on  
  44. exec sp_trace_setevent @TraceID, 15, 13, @on  
  45. exec sp_trace_setevent @TraceID, 17, 1, @on  
  46. exec sp_trace_setevent @TraceID, 17, 9, @on  
  47. exec sp_trace_setevent @TraceID, 17, 6, @on  
  48. exec sp_trace_setevent @TraceID, 17, 10, @on  
  49. exec sp_trace_setevent @TraceID, 17, 14, @on  
  50. exec sp_trace_setevent @TraceID, 17, 11, @on  
  51. exec sp_trace_setevent @TraceID, 17, 12, @on  
  52. exec sp_trace_setevent @TraceID, 10, 15, @on  
  53. exec sp_trace_setevent @TraceID, 10, 16, @on  
  54. exec sp_trace_setevent @TraceID, 10, 9, @on  
  55. exec sp_trace_setevent @TraceID, 10, 17, @on  
  56. exec sp_trace_setevent @TraceID, 10, 2, @on  
  57. exec sp_trace_setevent @TraceID, 10, 10, @on  
  58. exec sp_trace_setevent @TraceID, 10, 18, @on  
  59. exec sp_trace_setevent @TraceID, 10, 11, @on  
  60. exec sp_trace_setevent @TraceID, 10, 12, @on  
  61. exec sp_trace_setevent @TraceID, 10, 13, @on  
  62. exec sp_trace_setevent @TraceID, 10, 6, @on  
  63. exec sp_trace_setevent @TraceID, 10, 14, @on  
  64. exec sp_trace_setevent @TraceID, 12, 15, @on  
  65. exec sp_trace_setevent @TraceID, 12, 16, @on  
  66. exec sp_trace_setevent @TraceID, 12, 1, @on  
  67. exec sp_trace_setevent @TraceID, 12, 9, @on  
  68. exec sp_trace_setevent @TraceID, 12, 17, @on  
  69. exec sp_trace_setevent @TraceID, 12, 6, @on  
  70. exec sp_trace_setevent @TraceID, 12, 10, @on  
  71. exec sp_trace_setevent @TraceID, 12, 14, @on  
  72. exec sp_trace_setevent @TraceID, 12, 18, @on  
  73. exec sp_trace_setevent @TraceID, 12, 11, @on  
  74. exec sp_trace_setevent @TraceID, 12, 12, @on  
  75. exec sp_trace_setevent @TraceID, 12, 13, @on  
  76. exec sp_trace_setevent @TraceID, 13, 1, @on  
  77. exec sp_trace_setevent @TraceID, 13, 9, @on  
  78. exec sp_trace_setevent @TraceID, 13, 6, @on  
  79. exec sp_trace_setevent @TraceID, 13, 10, @on  
  80. exec sp_trace_setevent @TraceID, 13, 14, @on  
  81. exec sp_trace_setevent @TraceID, 13, 11, @on  
  82. exec sp_trace_setevent @TraceID, 13, 12, @on  
  83.   
  84.   
  85. -- Set the Filters  
  86. declare @intfilter int  
  87. declare @bigintfilter bigint  
  88.   
  89. exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - 9230dcd0-8dd7-4448-9cfc-7ddf8bd84182'  
  90. -- Set the trace status to start  
  91. exec sp_trace_setstatus @TraceID, 1  
  92.   
  93. -- display trace id for future references  
  94. select TraceID=@TraceID  
  95. goto finish  
  96.   
  97. error:   
  98. select ErrorCode=@rc  
  99.   
  100. finish:   
  101. go  
  102.   
  103.   
  104.   
  105. /**** 
  106.  
  107. --如果要关闭这个Trace,需要运行下面的两句话: 
  108. exec sp_trace_setstatus 2, 0 
  109. -- 停止Trace 
  110. exec sp_trace_setstatus 2, 2 
  111. -- 完全关闭Trace,并且删除这个定义 
  112.  
  113. *****/  

作者:行走的贝壳

来源贝壳笔记 (http://ronli.cnblogs.com)

原文地址:https://www.cnblogs.com/ronli/p/2219219.html