使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视
这两天需要搞一份我们某个系统的夜间数据库处理的所有数据,从晚上8点左右到早上9点左右都在做数据处理。所以PM希望能够看看晚上的数据处理高峰期和一些事物以及数据库的使用情况,所以需要用profiler来做个像样的分析。如果你不知道一些概念和指标,可以看看这篇文章。
数据列描述为跟踪内捕获的每个事件类所收集的数据。事件类确定收集的数据类型,因此并不是所有数据列都适用于所有事件类。例如,为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:BatchStarting或SP: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
服务器代表事件执行的物理磁盘写入数。
事件类是描述由服务器生成的事件的列。事件类确定收集的数据类型,因此并不是所有数据列都适用于所有事件类。
每个事件类的子类都可以通过一些数据列来进行分析:
微软提供的所有事件类和数据列的对应分析如下:
最后是用户自己定义的事件类:
以我们常用的存储过程事件类来说明如何结合列进行存储过程事件类分析:
首先给出事件类和数据列的对应关系:
事件类
数据列
描述
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
存储过程内的语句已启动。
网友评论