快速应用SQL-Server事件探查器(SQLServer2008)_第1页
快速应用SQL-Server事件探查器(SQLServer2008)_第2页
快速应用SQL-Server事件探查器(SQLServer2008)_第3页
快速应用SQL-Server事件探查器(SQLServer2008)_第4页
快速应用SQL-Server事件探查器(SQLServer2008)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

整体概念 SQLServer事件探查器(Profiler)可以帮助数据库管理员及其他人员跟踪SQLServer数据库所执行的特定事件,监视数据库的行为;并将这些有价值的信息保存到文件或表,以便以后用来分析解决数据库出现的问题,对数据库引擎性能进行优化。例如:对于HRP实施及开发人员可以达到以下目的: 1.追踪功能操作在数据库后台所影响的物理表,视图或存储过程等。 2.当发生系统异常或报错时,追踪是发生在操作哪个数据库对象。

3.追踪影响操作性能的数据库后台执行记录。第一页,共35页。SQLSERVER2008的事件探查器的位置1、首先从“开始”菜单指向“所有程序”,打开SQLServerManagementStudio。从“工具”菜单选择“事件探查器”。也可从菜单中直接打开,如下:第二页,共35页。SQLSERVER2008的事件探查器的位置1、选择连接的服务器:第三页,共35页。SQL事件探查器术语模板 每次启动事件探查器监视时都会让您选择一个模板来进行跟踪,默认是一个标准模板(SQLProfilerStandard)。里面有事先定义好的的事件和数据列,没有筛选。 我们可以创建一个模板以指定使用哪些事件、数据列和筛选。然后可以保存该模板,并用当前的模板设置启动跟踪。捕获的跟踪数据基于模板中指定的选项。模板不执行且必须用.tdf扩展名保存到文件。第四页,共35页。不同的模板,追踪的内容不同:其中所有项目,在鼠标移上去后,下面都有说明。模板第五页,共35页。模板常用模板说明:(后3种是用户自定义的样例模板)模板名称说明空白自定义模板,显示所有事件及监控对象,由用户根据需求自由定义。SP_Countssqlserver所有服务器进程监控模板:服务器,数据库,对象等。Standard(默认值)日常监控:登录,链接,存储过程,SQL语句TSQL比默认模板缩小监控范围,只看启动事件。TSQL_Duration只监控:存储过程,SQL语句完成时事件。TSQL_Grouped日常监控:登录,链接,存储过程与SQL语句开始执行或调用事件。TSQL_Locks监控:错误与警告,锁,存储过程,SQL语句。TSQL_Replay监控:进程,登录,链接,存储过程,SQL语句。Tuning只监控:存储过程,SQL语句完成时事件。1(用户)监控:错误与警告3(用户)只监控:SQL语句完成时事件。select(用户)监控:错误与警告,存储过程,SQL语句完成时事件。第六页,共35页。模板

我们还可以保存模板以减少我们的重复劳动。保存模板涉及保存跟踪定义,比如指定的数据列、事件和筛选。 跟踪定义包括事件类、数据列、事件准则(筛选)和所有其它用来创建跟踪的属性(捕获的事件数据除外)。使用SQL事件探查器创建的模板保存在运行SQL事件探查器的计算机上的文件中。 如果经常监视SQLServer,则保存模板以便分析性能。模板每次捕获相同的事件数据,并使用相同的跟踪定义监视同一事件,因而无须在每次创建跟踪时都定义事件类和数据列。 另外,可以将模板提供给其他用户,供其监视特定的SQLServer事件。例如,支持提供商可提供给客户一个模板。客户使用这个模板捕获所需的事件数据,然后将这些数据发送给支持提供商供其分析。 我们可以在“文件”菜单下“新建”下的“跟踪模板”里建立一个新的模板,选择好对应的事件类和数据列后将其保存,建议按应用场景取名以便是使用,如“存储过程跟踪模板”、“错误定位跟踪模板”等。第七页,共35页。模板

同样我们也可以修改保存在运行SQL事件探查器的本地计算机上的文件中的模板以及从文件导出的模板。 如果没有记住当初用于创建跟踪的模板,或希望以后再次运行同一跟踪,则可能需要从跟踪文件导出模板。修改模板属性(如事件类和数据列)的方法与当初设置该属性的方法相同。可以添加和删除事件类和数据列,也可以对筛选进行更改。修改模板后,以同一名称保存它将重写原来的模板。 当处理现有跟踪时,可以查看属性,但不能修改。警告:使用相同的名称保存跟踪文件将重写原来的跟踪文件,这将导致任何当初捕获的事件或已删除或筛选的数据列丢失第八页,共35页。SQL事件探查器术语事件 事件是在MicrosoftSQLServer引擎中生成的操作。例如: 登录连接、失败和断开。

Transact-SQLSELECT、INSERT、UPDATE和DELETE语句。 远程过程调用(RPC)批处理状态。 存储过程的开始或结束。

SQL批处理的开始或结束。 存储过程内的语句的开始或结束。 写入SQLServer错误日志的错误。 在数据库对象上获取或释放的锁。 打开的游标。 安全权限检查。 由事件生成的所有数据显示在单个行中的跟踪内。该行包含详细描述事件的数据列,称为事件类。第九页,共35页。SQL事件探查器监控事件分类常用的事件分类:第十页,共35页。TSQL事件类TSQL事件类是一个常用的事件,其对应的常用事件解释如下:第十一页,共35页。TSQL事件对应数据列:第十二页,共35页。存储过程事件类存储过程事件类是执行存储过程所产生的事件的集合,也是一个常用的事件类,其对应的常用事件解释如下:第十三页,共35页。存储过程事件类SP:Starting---表明存储过程已被启动的时间,其监视到的结果是整个存储过程的调用,结果形式如:execSa_MoveSaleDetail

'Sa_TempSaleDetail_GCCXL0','','','','','','','',''其中

Sa_MoveSaleDetail

为存储过程名称;

exec为SQL的一个命令,可以理解为执行;

‘Sa_TempSaleDetail_GCCXL0’,‘

’,‘

’,‘

’,‘

’,‘

’,‘

’,‘

’,‘

’传递给该存储过程的参数;SP:Completed、RPC:Starting、RPC:Completed返回的结果都与此类似。第十四页,共35页。存储过程事件类SP:StmtStarting---表明正在启动存储过程内的某语句的时间,其监视到的结果是一个存储过程内部的一条语句的执行,结果形式如:--Sa_MoveSaleDetailifltrim(rtrim(@chrwhere1))='newReport_ParameterFromTempTable'其中:

--Sa_MoveSaleDetail指明该语句所属的存储过程;

ifltrim(rtrim(@chrwhere1))=‘newReport_ParameterFromTempTable’

指的是执行的具体的SQL语句;

SP:StmtCompleted返回的结果与此类似。第十五页,共35页。存储过程事件类

以上两部分的事件您可以理解为整体和局部的概念,也就是说一个是跟踪整体的结果,一个是跟踪明细的结果。 如果是希望了解程序的流程,可以跟踪整体,知道其使用了那些存储过程即可。然后再具体查看该存储过程,了解其内部处理流程; 此处插入说明一点,要查看某个存储过程的具体内容,可以直接到企业管理器里找到该存储过程双击打开;也可以在查询分析器里利用系统存储过程SP_HelpText来查看,如前面说到的存储过程Sa_MoveSaleDetail,我们可以在查询分析器对应的数据库下执行如下命令:

SP_HelpTextSa_MoveSaleDetail来查看其明细内容。但是要注意的一点是:必须该存储过程没有加密,否则无法查看。 如果是跟踪错误,建议选择明细的跟踪,这样可以具体的定位到某个存储过程里的某条语句出的错。第十六页,共35页。错误和警告事件类

错误和警告是在发生SQLServer错误或警告时产生的事件类集合(例如,一个在编译存储过程中产生的错误,或者一个SQLServer中的异常错误),其对应的常用事件解释如下:第十七页,共35页。错误和警告事件类

该事件类里面又以Exception事件类为主要,基本上只要是SQL里面发生的错误其都能跟踪得到,这为我们快速定位错误提供了简便而准确的方法,我们来看下面的错误展示。 首先我们在运行一个跟踪,挑选出要跟踪的事件类为

SQL:BatchStarting; SQL:BatchCompleted; Exception;

数据列为默认的,我们再在查询分析器里执行一条SQL语句:

Update rdrecord set id=‘11’

报错如下:服务器:消息2601,级别14,状态3,行1不能在具有唯一索引'aaRdRecord_PK'的对象'RdRecord'中插入重复键的行。语句已终止。第十八页,共35页。错误和警告事件类

停止跟踪,看看是否正确跟踪出错误:第十九页,共35页。错误和警告事件类

我们看到,没有任何问题,错误得以跟踪到,注意其上我以蓝色表注的语句,其TEXTDATA的内容都是一致的,只是对应的事件类分别为SQL:BatchStarting和SQL:BatchCompleted,正好把EXCEPTION事件类对应的事件给包在中间,那么我们就可以知道,引起错误的语句就是Update rdrecordset id='11‘了。怎么样,定位错误就是这么简单!我们把图再放在这里给大家对比一下看看:第二十页,共35页。SQL事件探查器术语筛选 当创建跟踪或模板时,可以定义筛选由事件收集的数据的准则。如果没有设置筛选,跟踪输出中将返回选定事件类的所有事件。例如,可以将跟踪中的MicrosoftWindows®2000用户名限制为特定用户,以将输出数据 如果跟踪变得太大,可以基于想要的信息进行筛选,以便只收集事件数据的减少到感兴趣的那些用户。也可以只跟踪对特定数据库的操作的信息,这样在多帐套的服务器上就可以更快的收集到我们感兴趣的信息。第二十一页,共35页。SQL事件探查器术语跟踪 跟踪基于选定的事件、数据列和筛选捕获数据。 例如,可创建模板监视异常错误。为此,应选择跟踪Exception事件类以及Error、State和Severity数据列,这些都是为了使跟踪结果提供有意义的数据而需收集的。保存模板后,便可将其作为跟踪运行,并且可收集关于服务器中发生的任何Exception事件的数据。可保存此跟踪数据,然后稍后重播或立即用于分析。第二十二页,共35页。跟踪详解启动、暂停和停止跟踪

使用SQL事件探查器时,启动跟踪将打开一个新的跟踪窗口(如果没有窗口打开),并立即捕获数据。当使用SQLServer系统存储过程时,每次启用SQLServer实例时可手工或自动启动跟踪。一启跟踪,就会立即捕获数据。启动跟踪后,只能修改跟踪的名称。 暂停跟踪可防止捕获更多的事件数据,直到重新启动。重新启动跟踪将继续执行跟踪操作。先前捕获的所有数据都不丢失。重新启动跟踪时,从启动的那一点起继续捕获数据。当暂停跟踪时,可以更改名称、事件、列和筛选。但是不能更改要将跟踪发送到的目的地或服务器连接。 停止跟踪将停止捕获数据。一旦停止了跟踪,除非已将数据捕获到了跟踪文件或跟踪表中,否则重新启动该跟踪将丢失以前捕获的数据。当停止跟踪时,将保留以前选择的所有跟踪属性。当停止跟踪时,可以更改名称、事件、列和筛选。第二十三页,共35页。

说明:我们可以将跟踪的结果保存到文件里或者保存到数据库的表里。 需要说明一点的是,如果保存在文件里,那么您在使用查询功能时需要注意一点:大小写敏感,也就是说查询区分大小写,如RDRECORD与rdrecord是不同的内容。 而如果保存在表里的话则没有这种缺点,但是如果您希望保存在表里,最好选择其他服务器上的数据库来保存,特别是一些对数据库操作频繁的动作,如果保存在同一服务器上,也最好不要将结果表建立在目标数据库里,否则将会严重影响效率。第二十四页,共35页。跟踪详解查看和分析跟踪 使用SQL事件探查器可以查看跟踪内捕获的事件数据。SQL事件探查器基于定义的跟踪属性显示数据。 分析MicrosoftSQLServer数据的一个方法是将数据复制到另一个程序,如SQL查询分析器。 使用SQL事件探查器可以打开保存的跟踪文件(后缀为.trc的跟踪文件)。

可以用自定义的字体、字体大小以便有助于分析跟踪。第二十五页,共35页。跟踪详解重播跟踪 在创建或编辑跟踪时,可以保存跟踪供以后重播。SQL事件探查器的特色是有一个多线程播放引擎,它能模拟用户连接和SQLServer身份验证,使用户得以重新产生跟踪内捕获的活动。因此,重播对解决应用程序或进程的问题很有帮助。识别出问题并进行了纠正后,对纠正后的应用程序或进程运行找到了潜在问题的那个跟踪,然后重播原来的跟踪并比较结果。 跟踪重播支持使用重播到断点和游标的方式进行调试,这在分析长脚本时尤为有用。第二十六页,共35页。跟踪详解单步跟踪

SQL事件探查器使您得以不必从头至尾全部重播跟踪内的所有事件,而按下面的方式重播跟踪:一次重播一个事件通过一次一个事件地重播跟踪,可以检查每个事件发生后的效果。使用单步跟踪继续重播跟踪时,重播下一个事件后跟踪再次暂停。重播到断点通过在跟踪内指定一个或多个断点,可以按重播选项指定的设置,重播带断点标记的事件之前的所有事件,无须用户干预,播完后跟踪重播将暂停。跟踪重播可以继续按一次一个事件、到下一个断点(若有)、到游标或到跟踪的结束处等方式重播跟踪。如果在重播跟踪时不想检查断点前的每个事件,则重播跟踪到断点的方式很有用。例如,已经调试了代码并确定了断点前的所有事件都按预期执行,不需要进一步检查这些事件。重播到游标通过重播跟踪到游标(跟踪内的突出显示事件),可重播突出显示事件前的所有事件,无须用户干预。但是,如果在跟踪内标记了一个断点,而这个断点位于游标和跟踪内下一个执行点之间,重播将在这个断点处停止,而不会继续重播到游标。删除跟踪内的所有断点以重播跟踪到游标。与断点一样,如果在重播跟踪时不想检查游标前的每个事件,重播跟踪到游标很有用。 单步跟踪有助于调试跟踪内捕获的事件。例如,可以创建一个跟踪,监视所有提交的批处理的执行。通过一次一个事件地(单步)重播跟踪内的事件,可以确定每个批处理发生时的效果,使您得以调试代码。这比在批处理间放置大量的调试代码有效得多。调试代码通常会产生更多需要从生成的实际结果中分离出来的输出,完成调试后必须正确地删除这些输出。第二十七页,共35页。SQL事件探查器性能考虑 下面是一些有助于更有效地使用SQL事件探查器的提示和技巧。运行的跟踪过多 如果MicrosoftSQLServer实例运行得过慢,则表明可能SQL事件探查器运行的跟踪过多或正在运行复杂的跟踪。停止任何运行的跟踪以观察性能是否有所提高。如果停止跟踪可使性能提高,则请仔细检查跟踪以确保只跟踪必要的信息。确保没有同时运行过多的复杂跟踪。管理大跟踪文件 大跟踪文件会占用大量磁盘空间,在网络上发送时会很慢,也很昂贵。通过删除不必要的事件类型和/或数据列,并应用筛选将跟踪限制为特定的跟踪事件准则(如ClientProcessID或SPID,或ApplicationName的值的集合),减小保存的跟踪文件的大小。使用相同的名称或新的名称保存跟踪文件。

警告

使用相同的名称保存跟踪文件将重写原来的文件,这将导致任何当初捕获的事件或已删除或筛选的数据列丢失。第二十八页,共35页。SQL事件探查器方案 1、分析程序业务流程和数据库内数据流向 可以创建一个跟踪来捕获与StoredProcedure事件类(SP:Completed、SP:Starting、SP:StmtCompleted和SP:StmtStarting)和TSQL事件类(SQL:BatchStarting

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论