功能杂谈--关于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事件,否则无法找到具体查询文本;

--=====================================================================

posted on 2014-11-13 00:31  笑东风  阅读(334)  评论(1)    收藏  举报

导航