將篩選應(yīng)用到跟蹤。只有在現(xiàn)有的已停止跟蹤(status 為 0)上才能執(zhí)行 sp_trace_setfilter。如果在不存在或其 status 不為 0 的跟蹤上執(zhí)行該存儲過程,則 SQL Server 2000 將返回錯誤。
sp_trace_setfilter [ @traceid = ] trace_id
, [ @columnid = ] column_id
, [ @logical_operator = ] logical_operator
, [ @comparison_operator = ] comparison_operator
, [ @value = ] value
[ @traceid = ] trace_id
是要為其設(shè)置篩選的跟蹤 ID。trace_id 的數(shù)據(jù)類型為 int,沒有默認設(shè)置。用戶使用 trace_id 值識別、修改和控制跟蹤。
[ @columnid = ] column_id
是將在其上應(yīng)用篩選的列 ID。column_id 的數(shù)據(jù)類型為 int,沒有默認設(shè)置。如果 column_id 為 NULL,則 SQL Server 為指定的跟蹤清除所有篩選。
[ @logical_operator = ] logical_operator
指定將應(yīng)用 AND (0) 運算符還是應(yīng)用 OR (1) 運算符。logical_operator 的數(shù)據(jù)類型為 int,沒有默認設(shè)置。
[ @comparison_operator = ] comparison_operator
指定要進行比較的類型。comparison_operator 的數(shù)據(jù)類型為 int,沒有默認設(shè)置。下表包含比較運算符及其代表值。
| 值 | 比較運算符 |
|---|---|
| 0 | =(等于) |
| 1 | <>(不等于) |
| 2 | >(大于) |
| 3 | <(小于) |
| 4 | >=(大于或等于) |
| 5 | <=(小于或等于) |
| 6 | LIKE |
| 7 | NOT LIKE |
[ @value = ] value
指定要在其上篩選的值。value 的數(shù)據(jù)類型必須匹配要篩選的列的數(shù)據(jù)類型。因此,如果將篩選設(shè)置在數(shù)據(jù)類型為 int 的對象 ID 列上,則 value 必須是 int。不允許 NULL 值和空字符串;當事件的列值為空時,SQL Server 將傳遞在該列上定義的任何篩選。如果 value 的數(shù)據(jù)類型為 nvarchar 或 varbinary,則的最大長度可以是 8000。
比較運算符為 LIKE 或 NOT LIKE 時,邏輯運算符可以包括"%"或其它適合 LIKE 操作的篩選。
若要在列值范圍內(nèi)應(yīng)用篩選,則必須執(zhí)行 sp_trace_setfilter 兩次:一次用 '>=' 比較運算符,一次用 '<=' 運算符。
下表描述在存儲過程完成之后用戶可能獲得的代碼值。
| 返回代碼 | 描述 |
|---|---|
| 0 | 沒有錯誤。 |
| 1 | 未知錯誤。 |
| 2 | 本跟蹤當前正在運行。此時更改跟蹤將導致錯誤。 |
| 4 | 指定的列無效。 |
| 5 | 不允許篩選指定的列。只有 sp_trace_setfilter 才能返回該值。 |
| 6 | 指定的比較運算符無效。 |
| 7 | 指定的邏輯運算符無效。 |
| 9 | 指定的跟蹤句柄無效。 |
| 13 | 內(nèi)存不足。在沒有足夠內(nèi)存執(zhí)行指定的操作時返回此代碼。 |
| 16 | 該函數(shù)對此跟蹤無效。 |
sp_trace_setfilter 是 Microsoft® SQL Server™ 2000 存儲過程,它執(zhí)行以前由 SQL Server 早期版本使用的擴展存儲過程所執(zhí)行的很多操作。使用 sp_trace_setfilter 存儲過程而不使用 xp_trace_set*filter 擴展存儲過程以在跟蹤上創(chuàng)建、應(yīng)用、刪除或操作篩選。有關(guān)更多信息,請參見創(chuàng)建和管理模板。
在 sp_trace_setfilter 的一次執(zhí)行過程中必須一起啟用特定列的所有篩選。例如,如果用戶要在應(yīng)用程序名列上應(yīng)用兩個篩選并在用戶名列上應(yīng)用一個篩選,則用戶必須按順序指定應(yīng)用程序名上的篩選。如果用戶試圖在調(diào)用一個存儲過程時指定以應(yīng)用程序名篩選,其后以用戶名篩選,然后以應(yīng)用程序名篩選,則 SQL Server 將返回錯誤。
嚴格地鍵入所有 SQL 跟蹤存儲過程 (sp_trace_xx) 的參數(shù)。如果沒有用正確的輸入?yún)?shù)數(shù)據(jù)類型(與在參數(shù)說明中指定的相同)調(diào)用這些參數(shù),則存儲過程將返回錯誤。
只有 sysadmin 固定服務(wù)器角色成員才能執(zhí)行 sp_trace_setfilter。
下例在 Trace 1 上設(shè)置 3 個篩選。篩選 N'SQLT%' 和 N'MS%' 使用"LIKE"比較運算符對一個列(AppName,其值為 10)進行操作。篩選 N'joe' 使用"EQUAL"比較運算符對另一個列(UserName,其值為 11)進行操作。
sp_trace_setfilter 1, 10, 0, 6, N'SQLT%'
sp_trace_setfilter 1, 10, 0, 6, N'MS%'
sp_trace_setfilter 1, 11, 0, 0, N'joe'
相關(guān)文章