使用SQL Server Profiler監(jiān)視系統(tǒng)的一些基本概念和各種事件的監(jiān)視
這兩天需要搞一份我們某個系統(tǒng)的夜間數(shù)據(jù)庫處理的所有數(shù)據(jù),從晚上8點左右到早上9點左右都在做數(shù)據(jù)處理漏设。所以PM希望能夠看看晚上的數(shù)據(jù)處理高峰期和一些事物以及數(shù)據(jù)庫的使用情況,所以需要用profiler來做個像樣的分析聂沙。如果你不知道一些概念和指標(biāo),可以看看這篇文章旬迹。
數(shù)據(jù)列描述為跟蹤內(nèi)捕獲的每個事件類所收集的數(shù)據(jù)。事件類確定收集的數(shù)據(jù)類型蔫敲,因此并不是所有數(shù)據(jù)列都適用于所有事件類。例如,為Lock:Acquired事件類捕獲Binary Data數(shù)據(jù)列時宫盔,該數(shù)據(jù)列包含鎖定的頁ID或行的值盏浙,但沒有Integer Data事件類的值眉睹。對于所有事件類,默認數(shù)據(jù)列均為自動填充废膘。
SQL事件探查器使您得以在創(chuàng)建模板時選擇數(shù)據(jù)列竹海。這些數(shù)據(jù)列表現(xiàn)在運行跟蹤時希望返回的信息。在SQL事件探查器中顯示的數(shù)據(jù)可以按事件發(fā)生的順序顯示丐黄,也可以按一個數(shù)據(jù)列或數(shù)據(jù)列組合分組顯示斋配。
下表描述默認情況下選定的SQL事件探查器數(shù)據(jù)列。
數(shù)據(jù)列
列號
描述
Application Name1
10
創(chuàng)建與SQL Server實例的連接的客戶端應(yīng)用程序名灌闺。 該列由應(yīng)用程序傳遞的值填充艰争,而不是由所顯示的程序名填充。
Binary Data
2
與在跟蹤中捕獲的事件類相關(guān)的二進制值桂对。
ClientProcessID1
9
由主機計算機分配給進程的ID甩卓,在該進程中客戶應(yīng)用程序正在運行。如果客戶端提供客戶端進程ID蕉斜,則填充此數(shù)據(jù)列逾柿。
Column Permissions
44
表明是否已設(shè)置了列權(quán)限。分析語句文本宅此,以確定將哪些權(quán)限應(yīng)用到了哪些列机错。
CPU
18
事件所使用的CPU時間總計(以毫秒為單位)。
Database ID1
3
USE database語句所指定的數(shù)據(jù)庫ID父腕,如果沒有對給定實例發(fā)出過USE database語句弱匪,則是默認數(shù)據(jù)庫。如果在跟蹤內(nèi)捕獲Server Name數(shù)據(jù)列且服務(wù)器可用璧亮,則SQL事件探查器將顯示數(shù)據(jù)庫名萧诫。 通過使用DB_ID函數(shù)確定數(shù)據(jù)庫的值。
DatabaseName
35
正在運行用戶語句的數(shù)據(jù)庫的名稱杜顺。
DBUserName1
40
客戶端的SQL Server用戶名财搁。
Duration
13
事件所花費的時間總計(以毫秒為單位)。
End Time
15
事件結(jié)束時的時間躬络。啟動事件的事件類(如SQL:BatchStarting或SP:Starting)的該列不填充尖奔。
Error
31
給定事件的錯誤號。通常是存儲在sysmessages中的錯誤號。
EventClass1
27
捕獲的事件類類型提茁。
EventSubClass1
21
事件子類的類型淹禾,提供有關(guān)每個事件類的進一步信息。例如茴扁,Execution Warning事件類的事件子類值代表執(zhí)行警告的類型:
1 =查詢等待铃岔。查詢必須等待資源(如內(nèi)存)才能執(zhí)行。
2 =查詢超時峭火。查詢在等待執(zhí)行所需的資源時超時毁习。所有事件類的該數(shù)據(jù)列均不填充。
FileName
36
所修改的文件的邏輯名稱卖丸。
Handle
33
ODBC纺且、OLE DB或DB-Library所用的整數(shù),用以協(xié)調(diào)服務(wù)器的執(zhí)行稍浆。
Host Name1
8
正運行客戶端的計算機名载碌。如果客戶端提供主機名,則填充此數(shù)據(jù)列衅枫。若要確定主機名嫁艇,請使用HOST_NAME函數(shù)。
Index ID
24
受事件影響的對象上的索引ID弦撩。若要確定對象的索引ID步咪,請使用sysindexes系統(tǒng)表的indid列。
Integer Data
25
與在跟蹤中捕獲的事件類相關(guān)的整型值孤钦。
LoginName
11
用戶的登錄名(SQL Server安全登錄或Microsoft Windows?登錄憑據(jù)歧斟,格式為DOMAIN/Username)纯丸。
LoginSid1
41
登錄用戶的安全標(biāo)識號(SID)偏形。可以在master數(shù)據(jù)庫的sysxlogins表中找到該信息觉鼻。對于服務(wù)器中的每個登錄俊扭,SID是唯一的。
Mode
32
不同事件所用的整數(shù)坠陈,用于描述事件已接收或要請求的狀態(tài)萨惑。
NestLevel
29
表示@@NESTLEVEL所返回的數(shù)據(jù)的整數(shù)。
NT Domain Name1
7
用戶所屬的Microsoft Windows NT? 4.0或Windows 2000域仇矾。
NT User Name1
6
Windows NT 4.0或Windows 2000用戶名庸蔼。
Object ID
22
系統(tǒng)分配的對象ID。
ObjectName
34
引用的對象名贮匕。
ObjectType
28
表示事件中涉及的對象類型的值姐仅。該值對應(yīng)于sysobjects中的type列。
Owner Name
37
對象所有者的數(shù)據(jù)庫用戶名稱。
Permissions
19
表示所檢查的權(quán)限類型的整型值掏膏。取值為:
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
服務(wù)器代表事件執(zhí)行的邏輯磁盤讀取數(shù)劳翰。
RoleName
38
要啟用的應(yīng)用程序角色名。
Server Name1
26
跟蹤的SQL Server實例名馒疹。
Severity
20
異常錯誤的嚴(yán)重級別佳簸。
SPID1
12
SQL Server指派的與客戶端相關(guān)的服務(wù)器進程ID。
Start Time1
14
啟動事件的時間(可用時)颖变。
State
30
等同于錯誤狀態(tài)代碼生均。
Success
23
表示事件是否成功。取值包括:
1 =成功腥刹。
0 =失敗
例如疯特,1表示權(quán)限檢查成功,0表示該檢查失敗肛走。
TargetLoginName
42
對于以登錄為目標(biāo)的操作(例如漓雅,添加新登錄),是目標(biāo)登錄的名稱朽色。
TargetLoginSid
43
對于以目標(biāo)為登錄的操作(例如邻吞,添加新登錄),是目標(biāo)登錄的SID葫男。
TargetUserName
39
對于以數(shù)據(jù)庫用戶為目標(biāo)的操作(例如授予用戶權(quán)限)抱冷,是該用戶的名稱。
TextData
1
與跟蹤內(nèi)捕獲的事件類相關(guān)的文本值梢褐。但是旺遮,如果正在跟蹤參數(shù)化查詢,則不以TextData列中的數(shù)據(jù)值顯示變量盈咳。
Transaction ID
4
系統(tǒng)分配的事務(wù)ID耿眉。
Writes
17
服務(wù)器代表事件執(zhí)行的物理磁盤寫入數(shù)。
事件類是描述由服務(wù)器生成的事件的列鱼响。事件類確定收集的數(shù)據(jù)類型鸣剪,因此并不是所有數(shù)據(jù)列都適用于所有事件類。
每個事件類的子類都可以通過一些數(shù)據(jù)列來進行分析:
微軟提供的所有事件類和數(shù)據(jù)列的對應(yīng)分析如下:






最后是用戶自己定義的事件類:

以我們常用的存儲過程事件類來說明如何結(jié)合列進行存儲過程事件類分析:
首先給出事件類和數(shù)據(jù)列的對應(yīng)關(guān)系:
事件類
數(shù)據(jù)列
描述
RPC Output Parameter
Event Class
記錄的事件類型= 100丈积。
Object Name
來自RPC事件(如句柄)的輸出參數(shù)名筐骇。
Text Data
在由遠程過程調(diào)用(RPC)返回的對象名中命名的參數(shù)值。
RPC:Completed
Event Class
記錄的事件類型= 10江滨。
End Time
RPC的結(jié)束時間铛纬。
Duration
RPC的持續(xù)時間。
CPU
RPC所使用的CPU數(shù)量唬滑。
Reads
由RPC發(fā)出的頁讀取數(shù)告唆。
Writes
由RPC發(fā)出的頁寫入數(shù)莫秆。
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
事件的結(jié)束時間歌溉。
Duration
存儲過程運行的時間長度。
Object ID
存儲過程的對象ID骑晶。
Object Name
在高速緩存中找到的存儲過程名痛垛。
Object Type
調(diào)用的存儲過程類型。
Text Data
存儲過程調(diào)用的文本桶蛔。
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
觸發(fā)重新編譯的存儲過程的文本脑融。
SP:Starting
Event Class
記錄的事件類型= 42。
Nest Level
存儲過程的嵌套級缩宜。
Object ID
存儲過程的對象ID肘迎。
Object Name
在高速緩存中找到的存儲過程名甥温。
Object Type
正在啟動的存儲過程類型。
Text Data
存儲過程調(diào)用的文本妓布。
SP:StmtCompleted
Event Class
記錄的事件類型= 45姻蚓。
Event Sub Class
存儲過程的嵌套級。
Integer Data
語句返回的實際行數(shù)匣沼。
Object ID
系統(tǒng)指派的存儲過程ID狰挡。
Text Data
存儲過程內(nèi)的語句文本。
SP:StmtStarting
Event Class
記錄的事件類型= 44释涛。
Event Sub Class
存儲過程的嵌套級加叁。
Object ID
系統(tǒng)指派的存儲過程ID。
Text Data
存儲過程內(nèi)的語句文本唇撬。
然后是每個子事件類的說明:
事件類
描述
RPC Output Parameter
顯示有關(guān)先前執(zhí)行的遠程過程調(diào)用(RPC)的輸出參數(shù)的信息它匕。
RPC:Completed
在已完成RPC后發(fā)生。
RPC:Starting
在RPC已啟動后發(fā)生窖认。
SP:CacheHit
在高速緩存內(nèi)找到過程豫柬。
SP:CacheInsert
有項目插入過程高速緩存內(nèi)。
SP:CacheMiss
在過程高速緩存內(nèi)沒找到存儲過程扑浸。
SP:CacheRemove
項目已從過程高速緩存中刪除轮傍。
SP:Completed
存儲過程已完成。
SP:ExecContextHit
在高速緩存內(nèi)找到存儲過程的執(zhí)行版本首装。
SP:Recompile
存儲過程已重新編譯创夜。
SP:Starting
存儲過程已啟動。
SP:StmtCompleted
存儲過程內(nèi)的語句已完成仙逻。
SP:StmtStarting
存儲過程內(nèi)的語句已啟動驰吓。