針對某個(gè)跟蹤添加或刪除一個(gè)事件或事件列。只有在已停止的現(xiàn)有跟蹤(status 為 0)上才能執(zhí)行 sp_trace_setevent。如果在不存在或其 status 不為 0 的跟蹤上執(zhí)行該存儲(chǔ)過程,則 Microsoft® SQL Server™ 2000 將返回錯(cuò)誤。
sp_trace_setevent [ @traceid = ] trace_id
, [ @eventid = ] event_id
, [ @columnid = ] column_id
, [ @on = ] on
[ @traceid = ] trace_id
是要修改的跟蹤 ID。trace_id 的數(shù)據(jù)類型為 int,沒有默認(rèn)設(shè)置。用戶使用 trace_id 值識別、修改和控制跟蹤。
[ @eventid = ] event_id
是要打開的事件 ID。event_id 的數(shù)據(jù)類型為 int,沒有默認(rèn)設(shè)置。
下表列出了可以添加到跟蹤或從跟蹤中刪除的事件。
事件號 | 事件名稱 | 描述 |
---|---|---|
0-9 | 保留 | |
10 | RPC:Completed | 在已完成遠(yuǎn)程過程調(diào)用 (RPC) 后發(fā)生。 |
11 | RPC:Starting | 在 RPC 已啟動(dòng)后發(fā)生。 |
12 | SQL:BatchCompleted | 在已完成 Transact-SQL 批處理后發(fā)生。 |
13 | SQL:BatchStarting | 在 Transact-SQL 批處理已啟動(dòng)后發(fā)生。 |
14 | Login | 在用戶成功登錄到 SQL Server 時(shí)發(fā)生。 |
15 | Logout | 在用戶注銷 SQL Server 時(shí)發(fā)生。 |
16 | Attention | 在提示事件(如客戶端中斷請求或客戶端連接中斷)發(fā)生時(shí)發(fā)生。 |
17 | ExistingConnection | 在檢測所有用戶在啟動(dòng)跟蹤前連接到 SQL Server 的活動(dòng)。 |
18 | ServiceControl | 在修改過 SQL Server 服務(wù)狀態(tài)時(shí)發(fā)生。 |
19 | DTCTransaction | 跟蹤 Microsoft 分布式事務(wù)處理協(xié)調(diào)器 (MS DTC) 在兩個(gè)或更多的數(shù)據(jù)庫之間協(xié)調(diào)的事務(wù)。 |
20 | Login Failed | 表明試圖從客戶機(jī)登錄到 SQL Server 失敗。 |
21 | EventLog | 表示已將事件記錄到 Microsoft Windows NT® 應(yīng)用程序日志中。 |
22 | ErrorLog | 表示已將錯(cuò)誤事件記錄到 SQL Server 錯(cuò)誤日志中。 |
23 | Lock:Released | 表示已釋放一個(gè)資源鎖(如頁)。 |
24 | Lock:Acquired | 表示獲取了像數(shù)據(jù)頁這樣的資源鎖。 |
25 | Lock:Deadlock | 表明由于兩個(gè)并發(fā)事務(wù)都試圖獲得另一事務(wù)所擁有的不兼容的資源鎖而已互相鎖死。 |
26 | Lock:Cancel | 表示獲取的資源鎖已被取消(例如,由于死鎖的原因)。 |
27 | Lock:Timeout | 表示由于其它事務(wù)控制著所需資源的分塊鎖而使對資源鎖(如頁)的請求超時(shí)。超時(shí)由 @@LOCK_TIMEOUT 函數(shù)確定,并可用 SET LOCK_TIMEOUT 語句設(shè)置。 |
28 | DOP Event | 在執(zhí)行 SELECT、INSERT 或 UPDATE 語句之前發(fā)生。 |
29-31 | 保留 | 改為使用事件 28。 |
32 | 保留 | |
33 | Exception | 表明 SQL Server 中發(fā)生一個(gè)異常錯(cuò)誤。 |
34 | SP:CacheMiss | 表明未在過程高速緩存中找到某存儲(chǔ)過程的時(shí)間。 |
35 | SP:CacheInsert | 表明將某項(xiàng)目插入到過程高速緩存中的時(shí)間。 |
36 | SP:CacheRemove | 表明將某項(xiàng)目從過程高速緩存中刪除的時(shí)間。 |
37 | SP:Recompile | 表示已重新編譯某個(gè)存儲(chǔ)過程。 |
38 | SP:CacheHit | 表示在過程高速緩存中找到某存儲(chǔ)過程的時(shí)間。 |
39 | SP:ExecContextHit | 表示已在過程高速緩存內(nèi)找到某存儲(chǔ)過程的執(zhí)行版本。 |
40 | SQL:StmtStarting | 在已啟動(dòng) Transact-SQL 語句時(shí)發(fā)生。 |
41 | SQL:StmtCompleted | 在已完成 Transact-SQL 語句后發(fā)生。 |
42 | SP:Starting | 表明存儲(chǔ)過程已被啟動(dòng)的時(shí)間。 |
43 | SP:Completed | 表明存儲(chǔ)過程已完成的時(shí)間。 |
44 | 保留 | 改為使用事件 40。 |
45 | 保留 | 改為使用事件 41。 |
46 | Object: Created | 表示已經(jīng)創(chuàng)建一個(gè)對象,如 CREATE INDEX、CREATE TABLE 和 CREATE DATABASE 這樣的語句。 |
47 | Object: Deleted | 表示已經(jīng)刪除一個(gè)對象,如在 DROP INDEX 和 DROP TABLE 語句中。 |
48 | 保留 | |
49 | 保留 | |
50 | SQL Transaction | 跟蹤 Transact-SQL BEGIN、COMMIT、SAVE 和 ROLLBACK TRANSACTION 語句。 |
51 | Scan:Started | 表明已啟動(dòng)掃描一個(gè)表或索引的時(shí)間。 |
52 | Scan:Stopped | 表明已停止掃描一個(gè)表或索引的時(shí)間。 |
53 | CursorOpen | 表示 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 語句上打開游標(biāo)的時(shí)間。 |
54 | Transaction Log | 在事務(wù)被寫入事務(wù)日志時(shí)進(jìn)行跟蹤。 |
55 | Hash Warning | 表示未在緩沖分區(qū)進(jìn)行的某一哈希操作(例如,哈希聯(lián)接、哈希聚合、哈希 union 運(yùn)算、哈希非重復(fù))已回復(fù)為替換計(jì)劃。這可由于遞歸深度、數(shù)據(jù)扭曲、跟蹤標(biāo)記或位計(jì)數(shù)而發(fā)生。 |
56-57 | 保留 | |
58 | Auto Update Stats | 表示已自動(dòng)更新索引統(tǒng)計(jì)。 |
59 | Lock:Deadlock Chain | 為每個(gè)導(dǎo)致死鎖的事件而產(chǎn)生。 |
60 | Lock:Escalation | 表示較細(xì)粒度的鎖已轉(zhuǎn)換為較粗粒度的鎖(如由行鎖升級或轉(zhuǎn)換為頁鎖)。 |
61 | OLE DB Errors | 表明發(fā)生了一個(gè) OLE DB 錯(cuò)誤。 |
62-66 | 保留 | |
67 | Execution Warnings | 表明在執(zhí)行 SQL Server 語句或存儲(chǔ)過程期間發(fā)生的所有警告。 |
68 | Execution Plan | 顯示正在執(zhí)行的 Transact-SQL 語句的計(jì)劃樹。 |
69 | Sort Warnings | 表示不符合內(nèi)存要求的排序操作。不包括與創(chuàng)建索引有關(guān)的排序操作;只包括某查詢內(nèi)的排序操作(如 SELECT 語句中使用的 ORDER BY 子句)。 |
70 | CursorPrepare | 表示 ODBC、OLE DB 或 DB-Library 準(zhǔn)備好 Transact-SQL 語句中的游標(biāo)以便使用的時(shí)間。 |
71 | Prepare SQL | ODBC、OLE DB 或 DB-Library 已準(zhǔn)備一個(gè)或多個(gè) Transact-SQL 語句供使用。 |
72 | Exec Prepared SQL | ODBC、OLE DB 或 DB-Library 已執(zhí)行一個(gè)或多個(gè)準(zhǔn)備的 Transact-SQL 語句。 |
73 | Unprepare SQL | ODBC、OLE DB 或 DB-Library 已撤消準(zhǔn)備(刪除)準(zhǔn)備好的 Transact-SQL 語句。 |
74 | CursorExecute | 執(zhí)行先前由 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 語句上準(zhǔn)備的游標(biāo)。 |
75 | CursorRecompile | 由 ODBC 或 DB-Library 在 Transact-SQL 語句上打開的游標(biāo)已直接重新編譯或由于架構(gòu)更改而重新編譯。 為 ANSI 和非 ANSI 游標(biāo)觸發(fā)。 |
76 | CursorImplicitConversion | Transact-SQL 語句上的游標(biāo)由 SQL Server 從一種類型轉(zhuǎn)換到另一種類型。 為 ANSI 和非 ANSI 游標(biāo)觸發(fā)。 |
77 | CursorUnprepare | ODBC、OLE DB 或 DB-Library 撤消準(zhǔn)備(刪除)在 Transact-SQL 上準(zhǔn)備好的游標(biāo)。 |
78 | CursorClose | 關(guān)閉先前由 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 語句上打開的游標(biāo)。 |
79 | Missing Column Statistics | 在優(yōu)化器中可能會(huì)有用的列統(tǒng)計(jì)不可用。 |
80 | Missing Join Predicate | 正在執(zhí)行沒有聯(lián)接謂詞的查詢。這可能會(huì)導(dǎo)致查詢長時(shí)間運(yùn)行。 |
81 | Server Memory Change | Microsoft SQL Server 內(nèi)存的使用已增加或減少 1 MB 或最大服務(wù)器內(nèi)存的 5%(兩者中較大的)。 |
82-91 | User Configurable (0 -9) | 用戶定義的事件數(shù)據(jù)。 |
92 | Data File Auto Grow | 表示服務(wù)器已自動(dòng)擴(kuò)展某日志文件。 |
93 | Log File Auto Grow | 表示服務(wù)器已自動(dòng)擴(kuò)展某日志文件。 |
94 | Data File Auto Shrink | 表示服務(wù)器已自動(dòng)收縮某數(shù)據(jù)文件。 |
95 | Log File Auto Shrink | 表示服務(wù)器已自動(dòng)收縮某日志文件。 |
96 | Show Plan Text | 在查詢優(yōu)化器中顯示 SQL 語句的查詢計(jì)劃樹。 |
97 | Show Plan ALL | 用已執(zhí)行的 SQL 語句的完整的編譯時(shí)細(xì)節(jié)顯示查詢計(jì)劃。 |
98 | Show Plan Statistics | 執(zhí)行 SQL 語句的完整的編譯時(shí)細(xì)節(jié)來顯示查詢計(jì)劃用已執(zhí)行的 SQL 語句的完整的運(yùn)行時(shí)細(xì)節(jié)顯示查詢計(jì)劃。 |
99 | 保留 | |
100 | RPC Output Parameter | 生成每個(gè) RPC 的參數(shù)輸出值。 |
101 | 保留 | |
102 | Audit Statement GDR | SQL Server 中的任何用戶每次發(fā)出用于語句權(quán)限的 GRANT、DENY、REVOKE 時(shí)都發(fā)生。 |
103 | Audit Object GDR | 在 SQL Server 中的任何用戶每次發(fā)出用于對象權(quán)限的 GRANT、DENY、REVOKE 時(shí)都發(fā)生。 |
104 | Audit Add/Drop Login | 在添加或刪除 SQL Server 登錄時(shí)發(fā)生;用于 sp_addlogin 和 sp_droplogin。 |
105 | Audit Login GDR | 在添加或刪除 Microsoft Windows® 登錄權(quán)限時(shí)發(fā)生;用于 sp_grantlogin、sp_revokelogin 和 sp_denylogin。 |
106 | Audit Login Change Property | 在修改除密碼之外的登錄屬性時(shí)發(fā)生;用于 sp_defaultdb 和 sp_defaultlanguage。 |
107 | Audit Login Change Password | 在更改 SQL Server 登錄密碼時(shí)發(fā)生。 不記錄密碼。 |
108 | Audit Add Login to Server Role | 在從固定服務(wù)器角色添加或刪除登錄時(shí)發(fā)生;用于 sp_addsrvrolemember 和 sp_dropsrvrolemember。 |
109 | Audit Add DB User | 在添加或刪除作為某個(gè)數(shù)據(jù)庫的數(shù)據(jù)庫用戶(Windows 或 SQL Server)的登錄時(shí)發(fā)生;用于 sp_grantdbaccess、sp_revokedbaccess、sp_adduser 和 sp_dropuser。 |
110 | Audit Add Member to DB | 在將某登錄作為數(shù)據(jù)庫的固定數(shù)據(jù)庫用戶或用戶定義數(shù)據(jù)庫用戶進(jìn)行添加或刪除時(shí)發(fā)生;用于 sp_addrolemember、sp_droprolemember 和 sp_changegroup。 |
111 | Audit Add/Drop Role | 在將某登錄作為數(shù)據(jù)庫的數(shù)據(jù)庫用戶進(jìn)行添加或刪除時(shí)發(fā)生;用于 sp_addrole 和 sp_droprole。 |
112 | App Role Pass Change | 在更改應(yīng)用程序角色的密碼時(shí)發(fā)生。 |
113 | Audit Statement Permission | 在使用語句權(quán)限(如 CREATE TABLE)時(shí)發(fā)生。 |
114 | Audit Object Permission | 在成功地或不成功地使用對象權(quán)限(如 SELECT)時(shí)發(fā)生。 |
115 | Audit Backup/Restore | 在發(fā)出 BACKUP 或 RESTORE 命令時(shí)發(fā)生。 |
116 | Audit DBCC | 在發(fā)出 DBCC 命令時(shí)發(fā)生。 |
117 | Audit Change Audit | 在進(jìn)行審核跟蹤修改時(shí)發(fā)生。 |
118 | Audit Object Derived Permission | 在發(fā)出 CREATE、ALTER 和 DROP 對象命令時(shí)發(fā)生。 |
[ @columnid = ] column_id
是要為事件添加的列 ID。column_id 的數(shù)據(jù)類型為 int,沒有默認(rèn)設(shè)置。
下表列出了可以為事件添加的列。
列號 | 列名 | 描述 |
---|---|---|
1 | TextData | 與跟蹤內(nèi)捕獲的事件類相關(guān)的文本值。 |
2 | BinaryData | 與在跟蹤中捕獲的事件類相關(guān)的二進(jìn)制值。 |
3 | DatabaseID | USE database 語句所指定的數(shù)據(jù)庫 ID,如果沒有對給定的連接發(fā)出 USE database 語句,則是默認(rèn)數(shù)據(jù)庫 ID。 可以使用 DB_ID 函數(shù)確定數(shù)據(jù)庫的值。 |
4 | TransactionID | 系統(tǒng)分配的事務(wù) ID。 |
5 | 保留 | |
6 | NTUserName | Microsoft Windows NT® 用戶名。 |
7 | NTDomainName | 用戶所屬的 Windows NT 域。 |
8 | ClientHostName | 發(fā)起請求的客戶計(jì)算機(jī)名稱。 |
9 | ClientProcessID | 客戶端計(jì)算機(jī)分配給進(jìn)程的 ID,而客戶端應(yīng)用程序正在該進(jìn)程中運(yùn)行。 |
10 | ApplicationName | 創(chuàng)建與 SQL Server 實(shí)例的連接的客戶端應(yīng)用程序名。該列由應(yīng)用程序傳遞的值填充,而不是由所顯示的程序名填充。 |
11 | SQLSecurityLoginName | 客戶端的 SQL Server 登錄名稱。 |
12 | SPID | SQL Server 指派的與客戶端相關(guān)的服務(wù)器進(jìn)程 ID。 |
13 | Duration | 事件所花費(fèi)的實(shí)耗時(shí)間總計(jì)(以毫秒為單位)。Hash Warning 事件不填充該數(shù)據(jù)列。 |
14 | StartTime | 啟動(dòng)事件的時(shí)間(可用時(shí))。 |
15 | EndTime | 事件結(jié)束時(shí)的時(shí)間。啟動(dòng)事件類(如 SQL:BatchStarting 或 SP:Starting)的該列不填充。Hash Warning 事件也不填充該列。 |
16 | Reads | 服務(wù)器代表事件執(zhí)行的邏輯磁盤讀取數(shù)。Lock:Released 事件不填充該列。 |
17 | Writes | 服務(wù)器代表事件執(zhí)行的物理磁盤寫入數(shù)。 |
18 | CPU | 事件所使用的 CPU 時(shí)間總計(jì)(以毫秒為單位)。 |
19 | Permissions | 代表權(quán)限的位圖;由安全審核使用。 |
20 | Severity | 異常錯(cuò)誤的嚴(yán)重級別。 |
21 | EventSubClass | 事件子類類型。所有事件類的該數(shù)據(jù)列均不填充。 |
22 | ObjectID | 系統(tǒng)分配的對象 ID。 |
23 | Success | 嘗試使用權(quán)限成功;由審核使用。 1 = 成功 |
24 | IndexID | 受事件影響的對象上的索引 ID。若要確定對象的索引 ID,請使用 sysindexes 系統(tǒng)表的 indid 列。 |
25 | IntegerData | 與在跟蹤中捕獲的事件類相關(guān)的整型值。 |
26 | ServerName | 正跟蹤的 SQL Server 實(shí)例名(servername 或 servername\instancename)。 |
27 | EventClass | 正記錄的事件類類型。 |
28 | ObjectType | 對象類型(如表、函數(shù)或存儲(chǔ)過程)。 |
29 | NestLevel | 存儲(chǔ)過程正在其上執(zhí)行的嵌套級。請參見 @@NESTLEVEL。 |
30 | State | 發(fā)生錯(cuò)誤時(shí)的服務(wù)器狀態(tài)。 |
31 | Error | 錯(cuò)誤號。 |
32 | Mode | 獲取鎖的鎖模式。Lock:Released 事件不填充該列。 |
33 | Handle | 在事件中引用的對象句柄。 |
34 | ObjectName | 被訪問的對象名稱。 |
35 | DatabaseName | USE database 語句中指定的數(shù)據(jù)庫名稱。 |
36 | Filename | 被修改的文件名的邏輯名。 |
37 | ObjectOwner | 被引用對象的所有者 ID。 |
38 | TargetRoleName | 語句作為目標(biāo)的數(shù)據(jù)庫范圍角色或服務(wù)器范圍角色的名稱。 |
39 | TargetUserName | 某個(gè)操作目標(biāo)的用戶名。 |
40 | DatabaseUserName | 客戶端的 SQL Server 數(shù)據(jù)庫用戶名。 |
41 | LoginSID | 登錄用戶的安全標(biāo)識號 (SID)。 |
42 | TargetLoginName | 某個(gè)操作目標(biāo)的登錄名稱。 |
43 | TargetLoginSID | 是某個(gè)操作目標(biāo)的登錄 SID。 |
44 | ColumnPermissionsSet | 列級權(quán)限狀態(tài);由安全審核使用。 |
[ @on = ] on
指定是打開事件 (ON (1)) 還是關(guān)閉事件 (OFF (0))。@on 的數(shù)據(jù)類型為 bit,沒有默認(rèn)設(shè)置。
如果 on 設(shè)置為 1,且 column_id 是 NULL,則將事件設(shè)置為 ON 并清除所有列。如果 column_id 不為空,則為該事件將列設(shè)置為 ON。
如果 on 設(shè)置為 0,且 column_id 是 NULL,則關(guān)閉事件 (OFF) 且清除所有列。如果 column_id 不為空,則關(guān)閉列 (OFF)。
下表說明 @on 和 @columnid 之間的交互操作。
@on | @columnid | 結(jié)果 |
---|---|---|
ON (1) | NULL | 打開事件 (ON)。 清除所有列。 |
NOT NULL | 為指定的事件打開列 (ON)。 | |
OFF (0) | NULL | 關(guān)閉事件 (OFF)。 清除所有列。 |
NOT NULL | 為指定的事件關(guān)閉列 (OFF)。 |
下表描述在存儲(chǔ)過程完成之后用戶可能獲得的代碼值。
返回代碼 | 描述 |
---|---|
0 | 沒有錯(cuò)誤。 |
1 | 未知錯(cuò)誤。 |
2 | 本跟蹤當(dāng)前正在運(yùn)行。此時(shí)更改跟蹤將導(dǎo)致錯(cuò)誤。 |
3 | 指定的事件無效。該事件可能不存在或者它不適用于此存儲(chǔ)過程。 |
4 | 指定的列無效。 |
9 | 指定的跟蹤句柄無效。 |
11 | 指定的列在內(nèi)部使用并且不能刪除。 |
13 | 內(nèi)存不足。在沒有足夠內(nèi)存執(zhí)行指定的操作時(shí)返回此代碼。 |
16 | 該函數(shù)對此跟蹤無效。 |
sp_trace_setevent 是 Microsoft SQL Server 2000 存儲(chǔ)過程,它執(zhí)行以前由 SQL Server 早期版本使用的擴(kuò)展存儲(chǔ)過程執(zhí)行的很多操作。使用 sp_trace_setevent 而不使用:
對于為每個(gè)事件添加的每列,用戶都必須執(zhí)行 sp_trace_setevent。在每次執(zhí)行過程中,如果將 @on 設(shè)置為 1,則 sp_trace_setevent 將指定的事件添加到跟蹤事件的列表。如果將 @on 設(shè)置為 0,則 sp_trace_setevent 將從列表中刪除指定的事件。
嚴(yán)格地鍵入所有 SQL 跟蹤存儲(chǔ)過程 (sp_trace_xx) 的參數(shù)。如果沒有用正確的輸入?yún)?shù)數(shù)據(jù)類型(與在參數(shù)說明中指定的相同)調(diào)用這些參數(shù),則存儲(chǔ)過程將返回錯(cuò)誤。
只有 sysadmin 固定服務(wù)器角色成員才能執(zhí)行 sp_trace_setevent。
相關(guān)文章