功能杂谈--关于SQL trace的一些快遗忘资料
SQL Trace常用到的设置:
1. 创建trace
declare @rc int declare @TraceID int declare @maxfilesize bigint declare @DateTime datetime declare @filePath nvarchar(500) declare @traceOption int --设置跟踪结束时间 set @DateTime = '2014-11-12 23:59:56.000' --设置跟踪文件最大值(MB) set @maxfilesize = 5000 --设置文件地址 set @filePath=N'E:\SQL Trace20141112-1.trc' --设置跟踪配置 --0 Enable nothin,无配置 --2 Enable the roll over,配置跟踪文件可以滚动增加,如果不设置滚动增加,当文件增加到最大值后,最早的跟踪记录会被移除。 --4 Shutdow_on_error set @traceOption=2 exec @rc = sp_trace_create @TraceID output, @traceOption, @filePath, @maxfilesize, @Datetime
2. 开始/关闭trace
--关闭跟踪 EXEC sp_trace_setstatus @traceid = 3 , @status = 0 --开启跟踪 EXEC sp_trace_setstatus @traceid = 3 , @status = 1 --关闭跟踪并删除跟踪定义 EXEC sp_trace_setstatus @traceid = 2 , @status = 2
3. 查看当前的trace(默认情况下,用户常见的trace结束后,会自动删除掉)
--查看跟踪
select * from sys.traces
4. 将trace文件导入到表中
--将trace文件导入到表中 SELECT IDENTITY(BIGINT,1,1) AS RID, * INTO tempdb.dbo.TraceData FROM sys.fn_trace_gettable('E:\SQL Trace20141112-1.trc',default)
--=====================================================================
PS1: 建议先使用profiler设置并运行一段时间做检查,确认无误后再使用SQL trace来捕获,SQL trace比SQL Profiler更节省资源;
PS2:有些如JDBC调用时参数化查询时,会先调用sp_prepare来编译查询,获取一个编译后的INT值,然后再通过该INT值来执行,需要检查是否在Trace中加入对TSQL事件下的PrepareSQL事件,否则无法找到具体查询文本;
--=====================================================================

浙公网安备 33010602011771号