SQL SERVER 2005性能之跟踪
SQL Server Profiler这个工具大家应该都知道,就是SQL Server的事件跟踪器,通过这个工具可以收集你想要的SQL内部运行的事件。
但当数据库在运营中时,使用Profiler进行跟踪是要付出一定的性能代价的,因此今天给大家介绍下使用T-SQL语句进行事件的跟踪。
SQL SERVER 2005为我们提供了事件跟踪的几个相关的存储过程:
1.sp_trace_create:创建一个跟踪
2.sp_trace_setevent:设置需跟踪的事件
3.sp_trace_setstatus:设置跟踪的状态
4.sp_trace_setfilter:为跟踪设置过滤器
这四个存储过程的说明请大家参照MSDN,下面我们通过Profiler来设置一个跟踪,然后生成跟踪的T-SQL脚本。来看下这个4个存储过程的使用方法。
1.打开Profiler,然后选择几个常见的事件后,按下图生成T-SQL脚本
2.生成的T-SQL如下:
/****************************************************/
/* Created by: SQL Server Profiler 2005 */
/* Date: 2011/08/16 09:40:55 */
/****************************************************/
-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5
-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share
/*
* 创建跟踪,此存储过程返回新建跟踪的ID,同时此存储过程还要设置个trc文件的保存的路径。
* 比如放在:C:\trace中,文件名为:sp_trace.trc,那需要将InsertFileNameHere替换为:C:\trace\sp_trace
*/
exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL
if (@rc != 0) goto error
-- Client side File and Table cannot be scripted
-- Set the events
declare @on bit
set @on = 1
/*
* 为新建的跟踪设置需要跟踪的事件.各参数的意义如下:
* 1.@TraceID:需要操作的跟踪的ID
* 2.75:需要跟踪的事件
* 3.7:需要跟踪的列
* 4.@on:该事件的开启状态
*/
exec sp_trace_setevent @TraceID, 75, 7, @on --
exec sp_trace_setevent @TraceID, 75, 4, @on
exec sp_trace_setevent @TraceID, 75, 8, @on
exec sp_trace_setevent @TraceID, 75, 12, @on
exec sp_trace_setevent @TraceID, 75, 60, @on
exec sp_trace_setevent @TraceID, 75, 64, @on
exec sp_trace_setevent @TraceID, 75, 9, @on
exec sp_trace_setevent @TraceID, 75, 41, @on
......
exec sp_trace_setevent @TraceID, 166, 35, @on
exec sp_trace_setevent @TraceID, 166, 51, @on
exec sp_trace_setevent @TraceID, 166, 4, @on
exec sp_trace_setevent @TraceID, 166, 12, @on
exec sp_trace_setevent @TraceID, 166, 60, @on
exec sp_trace_setevent @TraceID, 166, 5, @on
exec sp_trace_setevent @TraceID, 166, 21, @on
exec sp_trace_setevent @TraceID, 166, 29, @on
exec sp_trace_setevent @TraceID, 166, 61, @on
-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint
exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - 3c203bc8-5030-405d-bf49-7acf75f762f6' --设置过滤器
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1 --启动该跟踪
-- display trace id for future references
select TraceID=@TraceID
goto finish
error:
select ErrorCode=@rc
finish:
go
其
相关新闻>>
- 发表评论
-
- 最新评论 更多>>