SQL Server 2005 - Default Trace.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:8 大小:45KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

SQL Server 2005 - Default Trace.doc

SQLServer2005-DefaultTrace.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/DBFocus/archive/2010/05/19/1739535.html"SQLServer2005-DefaultTrace(默认跟踪)2010-05-1920:00byDBFocus,276visits,HYPERLINK"http://www.cnblogs.com/DBFocus/archive/2010/05/19/1739535.html"\l"#"收藏,HYPERLINK"http://www.cnblogs.com/DBFocus/admin/EditPosts.aspx?postid=1739535"编辑在我们的工作中可能会遇到这样一种情形。由于数据库中某些对象被altered/created/deleted,造成我们的应用程序crash。当我们把问题解决之后,老板可能会问发生了什么?为什么会这样?是谁干的?在SQLServer2005中提供了DDLtrigger,它能回答所用这些问题,但我们没有在事前实现这一工作。在这种情况下,有些人可能会对老板说:“我不知道,但我能去查。”之后就疯狂地寻找第三方的工具来读transactionlog(事物日志)。他们可能不知道SQLServer2005有一个内置的功能能回到所用这些问题。答案藏在一个运行在后台的跟踪(DefaultTrace)中,我们可以利用DefaultTrace来寻找排除故障。DefaultTrace默认会自动运行,因为其非常轻量级,所以不会给系统造成很多负担。对我来说,DefaultTrace所带来的益处远大于它给数据库带来的负担。DefaultTrace不能代替DDLtrigger的功能,它应被用作SQL实例的监视器,或用来快速获得SQL问题事件的详细信息。DefaultTrace不会跟踪所有的事件,它扑捉一些关键性信息,包括auditingevents,databaseevents,errorevents,fulltextevents,objectcreation,objectdeletion,objectalteration。在本文中我们会关注对象级(eventlevel)的事件,这能回答老板的“是谁干的”这一问题。下面的代码能查询DefaultTrace是否已经被开启了1select*fromsys.configurationswhereconfiguration_id=1568如果DefaultTrace功能没有打开,我们先要打开这个Trace。可以是使用如下代码,注意运行这些代码需要相应的权限。1sp_configure'showadvancedoptions',1;2go3reconfigure;4go5sp_configure'defaulttraceenabled',1;6go7reconfigure;8go下一段代码是来获取当前跟踪文件的路径。在相应的文件夹下可能会有多个以log_开头的trace文件,我们可以把这些文件载入一个表中,进行分析,但载入多个文件会增加开销。最好只是载入需要分析的信息。select*from::fn_trace_getinfo(0)现在让我们看一看跟踪下来的数据。我们先从创建一个新数据库开始。usemastergocreatedatabaseTraceDB使用如下的代码来打开跟踪文件,获取创建数据库的信息。这里使用了一些限制性的条件来缩小结果集。注意:你的跟踪文件路径和名称可能和我的不同。要使用你自己的跟踪路径。代码selectloginname,loginsid,spid,hostname,applicationname,servername,databasename,objectname,e.category_id,cat.nameas[CategoryName],textdata,starttime,eventclass,eventsubclass,--0表示begin,1表示commite.nameasEventNamefrom::fn_trace_gettable('C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\LOG\log.trc',0)innerjoinsys.trace_eventseoneventclass=trace_event_idinnerjoinsys.trace_categoriesascatone.category_id=cat.category_idwheredatabasename='TraceDB'andobjectnameisnulland--根据objectnam