使用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

服務器代表事件執行的物理磁盤寫入數。

所有的事件類:

事件類是描述由服務器生成的事件的列。事件類確定收集的數據類型,因此并不是所有數據列都適用于所有事件類

每個事件類的子類都可以通過一些數據列來進行分析:

微軟提供的所有事件類和數據列的對應分析如下:

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

以我們常用的存儲過程事件類來說明如何結合列進行存儲過程事件類分析:

首先給出事件類和數據列的對應關系:

事件類

數據列

描述

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

存儲過程內的語句已啟動。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容