sql事件探查器讲解.ppt
《sql事件探查器讲解.ppt》由会员分享,可在线阅读,更多相关《sql事件探查器讲解.ppt(66页珍藏版)》请在冰豆网上搜索。
![sql事件探查器讲解.ppt](https://file1.bdocx.com/fileroot1/2022-10/7/2eda9ba9-dc8c-41d1-924a-c58b3b7c9570/2eda9ba9-dc8c-41d1-924a-c58b3b7c95701.gif)
SQLSERVER事件探查器初探,U8产品支持部XX号工程师XXXX年XX月XX日,简单的SQL语句select,查询语句语法:
select列名|表达式from表|视图where条件实例:
表authors中有三个字段name(姓名字符型),sex(性别字符型),age(年龄整型),现在要查询姓名是张三的记录,那么查询语句为:
Select*fromauthorswherename=张三说明:
*表示所有字段,字符型字段要用单引号括起来,简单的sql语句update,更新语句语法:
update表名set字段=值where条件实例:
以authors表为例,现在要将张三的名字改为李四,那么语句为:
Updateauthorssetname=李四wherename=张三,简单的sql语句insert,插入语句语法:
insertinto表名(字段名,)values(字段值,)实例:
在表authors中插入一条记录,姓名为王二,性别为男,年龄为28,那么语句为:
Insertintoauthors(name,sex,age)values(王二,男,28),简单的sql语句delete,删除语句语法:
deletefrom表名where条件实例:
删除表authors中姓名为张三的记录,那么删除语句为:
Deletefromauthorswherename=张三,整体概念,SQL事件探查器是图形工具,使我们得以监视MicrosoftSQLServer实例中的事件。
可以捕获有关每个事件的数据并将其保存到文件或SQLServer表中供以后分析。
例如,我们可以对生产环境进行监视,了解执行速度太慢而妨碍性能的存储过程;了解到哪些SQL语句或者存储过程产生了异常错误导致程序中断等等。
我们可以使用SQL事件探查器只监视感兴趣的事件,什么情况下如何决定那些事件是我们感兴趣的,我们将会在后面提到。
要运行事件探查器,系统所在硬盘可用空间至少要大于等于10M,否则跟踪将会自动停止。
如果跟踪变得太大,可以基于需要的信息进行筛选,以便只收集事件数据的子集。
监视太多事件类会增加服务器和监视进程的开销,并且可能导致跟踪文件或跟踪表变得很大,尤其是在进行长时间监视时。
SQL事件探查器术语,模板模板定义想要使用SQL事件探查器监视的每个事件的准则。
每次启动事件探查器监视时都会让您选择一个模板来进行跟踪,默认是一个标准模板(SQLProfilerStandard)。
里面有事先定义好的的事件和数据列,没有筛选。
我们可以创建一个模板以指定使用哪些事件、数据列和筛选。
然后可以保存该模板,并用当前的模板设置启动跟踪。
捕获的跟踪数据基于模板中指定的选项。
模板不执行且必须用.tdf扩展名保存到文件。
我们也可以创建一个自己的模板,并设置成每次启动自动运行该模板,具体操作如下:
点“工具”菜单下的“选项”,弹出如下窗口(请注意红色区域):
模板,模板,【使用下列默认跟踪模板】:
您可以在这里选择一个默认的跟踪模板,这样每次新建一个跟踪时就以该模板为默认模板;【进行连接后立即启动跟踪】:
选择该选项,连接上对应的服务器后立即运行默认跟踪模板进行跟踪;【显示】页签下您可以设置所使用的跟踪窗体显示的字体、字体的大小,这里就不在赘述。
模板,我们还可以保存模板以减少我们的重复劳动。
保存模板涉及保存跟踪定义,比如指定的数据列、事件和筛选。
跟踪定义包括事件类、数据列、事件准则(筛选)和所有其它用来创建跟踪的属性(捕获的事件数据除外)。
使用SQL事件探查器创建的模板保存在运行SQL事件探查器的计算机上的文件中。
如果经常监视SQLServer,则保存模板以便分析性能。
模板每次捕获相同的事件数据,并使用相同的跟踪定义监视同一事件,因而无须在每次创建跟踪时都定义事件类和数据列。
另外,可以将模板提供给其他用户,供其监视特定的SQLServer事件。
例如,支持提供商可提供给客户一个模板。
客户使用这个模板捕获所需的事件数据,然后将这些数据发送给支持提供商供其分析。
我们可以在“文件”菜单下“新建”下的“跟踪模板”里建立一个新的模板,选择好对应的事件类和数据列后将其保存,建议按应用场景取名以便是使用,如“存储过程跟踪模板”、“错误定位跟踪模板”等。
模板,同样我们也可以修改保存在运行SQL事件探查器的本地计算机上的文件中的模板以及从文件导出的模板。
如果没有记住当初用于创建跟踪的模板,或希望以后再次运行同一跟踪,则可能需要从跟踪文件导出模板。
修改模板属性(如事件类和数据列)的方法与当初设置该属性的方法相同。
可以添加和删除事件类和数据列,也可以对筛选进行更改。
修改模板后,以同一名称保存它将重写原来的模板。
当处理现有跟踪时,可以查看属性,但不能修改。
警告:
使用相同的名称保存跟踪文件将重写原来的跟踪文件,这将导致任何当初捕获的事件或已删除或筛选的数据列丢失,SQL事件探查器术语,跟踪跟踪基于选定的事件、数据列和筛选捕获数据。
例如,可创建模板监视异常错误。
为此,应选择跟踪Exception事件类以及Error、State和Severity数据列,这些都是为了使跟踪结果提供有意义的数据而需收集的。
保存模板后,便可将其作为跟踪运行,并且可收集关于服务器中发生的任何Exception事件的数据。
可保存此跟踪数据,然后稍后重播或立即用于分析。
SQL事件探查器术语,筛选当创建跟踪或模板时,可以定义筛选由事件收集的数据的准则。
如果跟踪变得太大,可以基于想要的信息进行筛选,以便只收集事件数据的子集。
如果没有设置筛选,跟踪输出中将返回选定事件类的所有事件。
例如,可以将跟踪中的MicrosoftWindows2000用户名限制为特定用户,以将输出数据减少到感兴趣的那些用户。
也可以只跟踪对特定数据库的操作的信息,这样在多帐套的服务器上就可以更快的收集到我们感兴趣的信息。
SQL事件探查器术语,事件事件是在MicrosoftSQLServer引擎中生成的操作。
例如:
登录连接、失败和断开。
Transact-SQLSELECT、INSERT、UPDATE和DELETE语句。
远程过程调用(RPC)批处理状态。
存储过程的开始或结束。
SQL批处理的开始或结束。
存储过程内的语句的开始或结束。
写入SQLServer错误日志的错误。
在数据库对象上获取或释放的锁。
打开的游标。
安全权限检查。
由事件生成的所有数据显示在单个行中的跟踪内。
该行包含详细描述事件的数据列,称为事件类。
SQL事件探查器术语,事件类事件类是描述由服务器生成的事件的列。
事件类确定收集的数据类型,因此并不是所有数据列都适用于所有事件类。
事件类示例包括:
SQL:
BatchCompleted,表示已完成SQL批处理。
运行客户端的计算机的名称。
受事件影响的对象ID(如表名)。
发出语句的用户的SQLServer名称。
正在执行的Transact-SQL语句文本或存储过程文本。
事件开始和结束的时间。
SQL事件探查器键盘快捷方式,快捷键,SQL事件探查器方案,通常情况下,我们使用SQL事件探查器可以:
1、查找执行最差的查询:
例如,可以创建跟踪来捕获与TSQL和StoredProcedure事件类(尤其是RPC:
Completed和SQL:
BatchCompleted)相关的事件。
在这个跟踪内包含所有数据列,按Duration分组并指定事件准则。
例如,如果指定事件的Duration至少为1,000毫秒,则可以跟踪中排除运行时间短的事件。
根据需要可以增大Duration的最小值。
如果想一次只监视一个数据库,为DatabaseID事件准则指定一个值。
单这个用途对我们来说不是主要的,对测试和开发人员这应该是常需要用到的。
SQL事件探查器方案,2、监视存储过程的性能:
例如,可以创建一个跟踪来捕获与StoredProcedure事件类(SP:
Completed、SP:
Starting、SP:
StmtCompleted和SP:
StmtStarting)和TSQL事件类(SQL:
BatchStarting和SQL:
BatchCompleted)相关的事件。
在这个跟踪内包含所有数据列并按ClientProcessID分组。
如果想一次只监视一个数据库,为DatabaseID事件准则指定一个值。
同样,如果想一次只监视一个存储过程,为ObjectID事件准则指定一个值。
同样,这个用途对于我们也不是常用的。
SQL事件探查器方案,3、审核MicrosoftSQLServer活动可以使用SQL事件探查器审核SQLServer中的活动。
例如,如果安全管理员需要随时了解谁登录到了服务器,可以创建SQL事件探查器跟踪,提供已登录到服务器或从服务器注销的用户的完整视图。
之后,可出于法律目的使用这些信息记录活动,和出于技术目的使用这些信息跟踪违反安全策略的行为。
4、监视每个用户的Transact-SQL活动可以创建跟踪来捕获与Sessions事件类、ExistingConnection和TSQL事件类相关的事件。
将所有数据列包含在此跟踪内,不要指定任何事件准则,并按DBUserName将捕获的事件分组。
这两项内容对系统管理员比较实用。
SQL事件探查器方案,5、分析程序业务流程和数据库内数据流向可以创建一个跟踪来捕获与StoredProcedure事件类(SP:
Completed、SP:
Starting、SP:
StmtCompleted和SP:
StmtStarting)和TSQL事件类(SQL:
BatchStarting和SQL:
BatchCompleted)相关的事件。
用以分析程序的流程以及数据库内的表间关系。
这是一个对我们非常有用的用途,他可以帮助我们理解程序的业务流程,数据流等。
我们在学习一个新的产品,新的模块、新的功能时,可以利用这个功能来了解其使用到那些表,涉及到那些表。
甚至我们可以知道这些表的各个字段的具体涵义是什么。
经常接到询问某张单据的某项内容具体对应那张表的那个字段具体的电话。
其实您只要在界面上制作一张单据,然后在保存前运行一个跟踪,然后分析跟踪里面的插入语句就可以清楚的知道以上信息了。
SQL事件探查器方案,6、定位出错语句使用事件类错误和警告下的ERRORLOG、EVENTLOG、EXCEPTION等相关事件,可以在程序发生异常的时候快速定位具体位置。
这个方案对我们处理数据,特别是处理一些由于数据库里存放的数据由于某种原因导致有异常数据时引发的一些错误有意想不到的功效。
SQL事件探查器监控事件分类,常用的事件分类:
TSQL事件类,TSQL事件类是一个常用的事件,其对应的常用事件解释如下:
TSQL事件对应数据列:
存储过程事件类,存储过程事件类是执行存储过程所产生的事件的集合,也是一个常用的事件类,其对应的常用事件解释如下:
存储过程事件类,SP:
Starting-表明存储过程已被启动的时间,其监视到的结果是整个存储过程的调用,结果形式如:
execSa_MoveSaleDetailSa_TempSaleDetail_GCCXL0,其中Sa_MoveSaleDetail为存储过程名称;exec为SQL的一个命令,可以理解为执行;Sa_TempSaleDetail_GCCXL0,传递给该存储过程的参数;SP:
Completed、RPC:
Starting、RPC:
Completed返回的结果都与此类似。
存储过程事件类,SP:
StmtStarting-表明正在启动存储过程内的某语句的时间,其监视到的结果是一个存储过程内部的一条语句的执行,结果形式如:
-Sa_MoveSaleDetailifltrim(rtrim(chrwhere1)=newReport_Paramete