使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视

使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视

这两天需要搞一份我们某个系统的夜间数据库处理的所有数据,从晚上8点左右到早上9点左右都在做数据处理。所以PM希望能够看看晚上的数据处理高峰期和一些事物以及数据库的使用情况,所以需要用profiler来做个像样的分析。如果你不知道一些概念和指标,可以看看这篇文章。

SQL事件探查器数据列:

数据列描述为跟踪内捕获的每个事件类所收集的数据。事件类确定收集的数据类型,因此并不是所有数据列都适用于所有事件类。例如,为Lock:Acquired事件类捕获Binary Data数据列时,该数据列包含锁定的页ID或行的值,但没有Integer Data事件类的值。对于所有事件类,默认数据列均为自动填充。

SQL事件探查器使您得以在创建模板时选择数据列。这些数据列表现在运行跟踪时希望返回的信息。在SQL事件探查器中显示的数据可以按事件发生的顺序显示,也可以按一个数据列或数据列组合分组显示。

下表描述默认情况下选定的SQL事件探查器数据列。

数据列

列号

描述

Application Name1

10

创建与SQL Server实例的连接的客户端应用程序名。 该列由应用程序传递的值填充,而不是由所显示的程序名填充。

Binary Data

2

与在跟踪中捕获的事件类相关的二进制值。

ClientProcessID1

9

由主机计算机分配给进程的ID,在该进程中客户应用程序正在运行。如果客户端提供客户端进程ID,则填充此数据列。

Column Permissions

44

表明是否已设置了列权限。分析语句文本,以确定将哪些权限应用到了哪些列。

CPU

18

事件所使用的CPU时间总计(以毫秒为单位)。

Database ID1

3

USE database语句所指定的数据库ID,如果没有对给定实例发出过USE database语句,则是默认数据库。如果在跟踪内捕获Server Name数据列且服务器可用,则SQL事件探查器将显示数据库名。 通过使用DB_ID函数确定数据库的值。

DatabaseName

35

正在运行用户语句的数据库的名称。

DBUserName1

40

客户端的SQL Server用户名。

Duration

13

事件所花费的时间总计(以毫秒为单位)。

End Time

15

事件结束时的时间。启动事件的事件类(如SQL:BatchStartingSP:Starting)的该列不填充。

Error

31

给定事件的错误号。通常是存储在sysmessages中的错误号。

EventClass1

27

捕获的事件类类型。

EventSubClass1

21

事件子类的类型,提供有关每个事件类的进一步信息。例如,Execution Warning事件类的事件子类值代表执行警告的类型:

1 =查询等待。查询必须等待资源(如内存)才能执行。

2 =查询超时。查询在等待执行所需的资源时超时。所有事件类的该数据列均不填充。

FileName

36

所修改的文件的逻辑名称。

Handle

33

ODBC、OLE DB或DB-Library所用的整数,用以协调服务器的执行。

Host Name1

8

正运行客户端的计算机名。如果客户端提供主机名,则填充此数据列。若要确定主机名,请使用HOST_NAME函数。

Index ID

24

受事件影响的对象上的索引ID。若要确定对象的索引ID,请使用sysindexes系统表的indid列。

Integer Data

25

与在跟踪中捕获的事件类相关的整型值。

LoginName

11

用户的登录名(SQL Server安全登录或Microsoft Windows®登录凭据,格式为DOMAIN/Username)。

LoginSid1

41

登录用户的安全标识号(SID)。可以在master数据库的sysxlogins表中找到该信息。对于服务器中的每个登录,SID是唯一的。

Mode

32

不同事件所用的整数,用于描述事件已接收或要请求的状态。

NestLevel

29

表示@@NESTLEVEL所返回的数据的整数。

NT Domain Name1

7

用户所属的Microsoft Windows NT® 4.0或Windows 2000域。

NT User Name1

6

Windows NT 4.0或Windows 2000用户名。

Object ID

22

系统分配的对象ID。

ObjectName

34

引用的对象名。

ObjectType

28

表示事件中涉及的对象类型的值。该值对应于sysobjects中的type列。

Owner Name

37

对象所有者的数据库用户名称。

Permissions

19

表示所检查的权限类型的整型值。取值为:

1 = SELECT ALL

2 = UPDATE ALL

4 = REFERENCES ALL

8 = INSERT

16 = DELETE

32 = EXECUTE(仅限于过程)

4096 = SELECT ANY(至少一列)

8192 = UPDATE ANY

16384 = REFERENCES ANY

Reads

16

服务器代表事件执行的逻辑磁盘读取数。

RoleName

38

要启用的应用程序角色名。

Server Name1

26

跟踪的SQL Server实例名。

Severity

20

异常错误的严重级别。

SPID1

12

SQL Server指派的与客户端相关的服务器进程ID。

Start Time1

14

启动事件的时间(可用时)。

State

30

等同于错误状态代码。

Success

23

表示事件是否成功。取值包括:

1 =成功。

0 =失败

例如,1表示权限检查成功,0表示该检查失败。

TargetLoginName

42

对于以登录为目标的操作(例如,添加新登录),是目标登录的名称。

TargetLoginSid

43

对于以目标为登录的操作(例如,添加新登录),是目标登录的SID。

TargetUserName

39

对于以数据库用户为目标的操作(例如授予用户权限),是该用户的名称。

TextData

1

与跟踪内捕获的事件类相关的文本值。但是,如果正在跟踪参数化查询,则不以TextData列中的数据值显示变量。

Transaction ID

4

系统分配的事务ID。

Writes

17

服务器代表事件执行的物理磁盘写入数。

所有的事件类:

事件类是描述由服务器生成的事件的列。事件类确定收集的数据类型,因此并不是所有数据列都适用于所有事件类

《使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视》

每个事件类的子类都可以通过一些数据列来进行分析:

微软提供的所有事件类和数据列的对应分析如下:

《使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视》
《使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视》
《使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视》
《使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视》
《使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视》





最后是用户自己定义的事件类:

以我们常用的存储过程事件类来说明如何结合列进行存储过程事件类分析:

首先给出事件类和数据列的对应关系:

事件类

数据列

描述

RPC Output Parameter

Event Class

记录的事件类型= 100。

Object Name

来自RPC事件(如句柄)的输出参数名。

Text Data

在由远程过程调用(RPC)返回的对象名中命名的参数值。

RPC:Completed

Event Class

记录的事件类型= 10。

End Time

RPC的结束时间。

Duration

RPC的持续时间。

CPU

RPC所使用的CPU数量。

Reads

由RPC发出的页读取数。

Writes

由RPC发出的页写入数。

Text Data

RPC文本。

RPC:Starting

Event Class

记录的事件类型= 11。

Text Data

RPC文本。

SP:CacheHit

Event Data

记录的事件类型= 38。

Object ID

在高速缓存中找到的存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Text Data

在高速缓存中找到的SQL语句的文本。

SP:CacheInsert

Event Class

记录的事件类型= 35。

Object ID

存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Text Data

正在高速缓存的SQL语句的文本。

SP:CacheMiss

Event Class

记录的事件类型= 34。

Event Sub Class

存储过程的嵌套级。

Object Name

在高速缓存中找到的存储过程名。

SP:CacheRemove

Event Class

记录的事件类型= 36。

Object ID

存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Text Data

正在从高速缓存中删除的SQL语句的文本。

SP:Completed

Event Class

记录的事件类型= 43。

Nest Level

存储过程的嵌套级。

End Time

事件的结束时间。

Duration

存储过程运行的时间长度。

Object ID

存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Object Type

调用的存储过程类型。

Text Data

存储过程调用的文本。

SP:ExecContextHit

Event Class

记录的事件类型= 39。

Object ID

存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Text Data

在高速缓存中找到的存储过程的文本。

SP:Recompile

Event Class

记录的事件类型= 37。

Nest Level

存储过程的嵌套级。

Object ID

存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Text Data

触发重新编译的存储过程的文本。

SP:Starting

Event Class

记录的事件类型= 42。

Nest Level

存储过程的嵌套级。

Object ID

存储过程的对象ID。

Object Name

在高速缓存中找到的存储过程名。

Object Type

正在启动的存储过程类型。

Text Data

存储过程调用的文本。

SP:StmtCompleted

Event Class

记录的事件类型= 45。

Event Sub Class

存储过程的嵌套级。

Integer Data

语句返回的实际行数。

Object ID

系统指派的存储过程ID。

Text Data

存储过程内的语句文本。

SP:StmtStarting

Event Class

记录的事件类型= 44。

Event Sub Class

存储过程的嵌套级。

Object ID

系统指派的存储过程ID。

Text Data

存储过程内的语句文本。

然后是每个子事件类的说明:

事件类

描述

RPC Output Parameter

显示有关先前执行的远程过程调用(RPC)的输出参数的信息。

RPC:Completed

在已完成RPC后发生。

RPC:Starting

在RPC已启动后发生。

SP:CacheHit

在高速缓存内找到过程。

SP:CacheInsert

有项目插入过程高速缓存内。

SP:CacheMiss

在过程高速缓存内没找到存储过程。

SP:CacheRemove

项目已从过程高速缓存中删除。

SP:Completed

存储过程已完成。

SP:ExecContextHit

在高速缓存内找到存储过程的执行版本。

SP:Recompile

存储过程已重新编译。

SP:Starting

存储过程已启动。

SP:StmtCompleted

存储过程内的语句已完成。

SP:StmtStarting

存储过程内的语句已启动。

    原文作者:oo水桶oo
    原文地址: https://www.jianshu.com/p/8b6f1a5835ee
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞