适用范围:SQL Server
筛选器将限制跟踪内收集的事件。 如果没有设置筛选器,则跟踪输出中将返回选定事件类的所有事件。 例如,如果将跟踪中的 Windows 用户名限定为特定用户,将仅输出与那些用户相关的数据。
并不一定要为跟踪设置筛选器。 但是,筛选器会将跟踪过程中的开销降到最低。 筛选器将返回有针对性的数据,这样会使性能分析和审核变得更容易。
若要筛选跟踪中捕获的事件数据,请选择跟踪事件准则(仅返回跟踪中的相关数据)。 例如,可以包括或排除监视跟踪中的特定应用程序的活动。
注意
SQL Server Profiler 创建跟踪时,默认情况下,将筛选出自己的活动。
又如,如果监视查询以确定执行时间最长的批处理,请将跟踪事件准则设置为仅监视那些执行时间超过 30 秒的批处理(CPU 最小值为 30,000 毫秒)。
筛选器创建指南
通常,按照下列步骤筛选跟踪。
- 在跟踪中标识要包括的事件。
- 标识包含所需信息的数据和数据列。
- 标识所需数据的子集并基于该数据子集定义筛选器。
例如,你可能只对超过一定时间长度的事件感兴趣。 你可以创建包括事件(其中 Duration 数据列超过 300 毫秒)的跟踪。 跟踪不包括在 300 毫秒内完成的事件。
你可以使用 SQL Server Profiler 或 Transact-SQL 存储过程创建筛选器。
在跟踪模板中筛选事件
修改筛选器
筛选器可用性取决于数据列。 某些数据列无法筛选。 可筛选的数据列只能使用部分关系运算符进行筛选,如下表所示。
| 关系运算符 | 运算符 | 说明 |
|---|---|---|
| 类似 | LIKE |
指定跟踪事件数据必须类似于输入文本。 允许使用多个值。 |
| 不类似于 | NOT LIKE |
指定跟踪事件数据不能与输入文本类似。 允许使用多个值。 |
| 等于 | = |
指定跟踪事件数据必须等于输入的值。 允许使用多个值。 |
| 不等于 | <> |
指定跟踪事件数据不能等于输入的值。 允许使用多个值。 |
| 大于 | > |
指定跟踪事件数据必须大于输入的值。 |
| 大于或等于 | >= |
指定跟踪事件数据必须大于或等于输入的值。 |
| 小于 | < |
指定跟踪事件数据必须小于输入的值。 |
| 小于或等于 | <= |
指定跟踪事件数据必须小于或等于输入的值。 |
下表列出了可筛选数据列和可用关系运算符。
| 数据列 | 关系运算符 |
|---|---|
ApplicationName |
%> |
BigintData1 |
|
BigintData2 |
|
BinaryData |
使用 SQL Server Profiler 筛选此数据列中的事件。 有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪。 |
ClientProcessID |
|
ColumnPermissions |
|
CPU |
|
DatabaseID |
|
DatabaseName |
%> |
DBUserName |
%> |
Duration |
|
EndTime |
%> |
Error |
|
EventSubClass |
|
FileName |
%> |
GUID |
使用 SQL Server Profiler 筛选此数据列中的事件。 有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪。 |
Handle |
|
HostName |
%> |
IndexID |
|
IntegerData |
|
IntegerData2 |
|
IsSystem |
|
LineNumber |
|
LinkedServerName |
%> |
LoginName |
%> |
LoginSid |
使用 SQL Server Profiler 筛选此数据列中的事件。 有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪。 |
MethodName |
%> |
Mode |
|
NestLevel |
|
NTDomainName |
%> |
NTUserName |
%> |
ObjectID |
|
ObjectID2 |
|
ObjectName |
%> |
ObjectType |
|
Offset |
.'. . |
OwnerID |
.'. . |
OwnerName |
%> |
ParentName |
%> |
Permissions |
.'. . |
ProviderName |
%> |
Reads |
.'. . |
RequestID |
.'. . |
RoleName |
%> |
RowCounts |
.'. . |
SessionLoginName |
%> |
Severity |
.'. . |
SourceDatabaseID |
.'. . |
SPID |
|
SqlHandle |
使用 SQL Server Profiler 筛选此数据列中的事件。 有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪。 |
StartTime |
>="<= |
State |
.'. . |
Success |
.'. . |
TargetLoginName |
%> |
TargetLoginSid |
使用 SQL Server Profiler 筛选此数据列中的事件。 有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪。 |
TargetUserName |
%> |
TextData 1 |
%> |
TransactionID |
.'. . |
Type |
.'. . |
Writes |
.'. . |
XactSequence |
.'. . |
1 如果从 osql 实用工具或 sqlcmd 实用工具跟踪事件,则始终将 % 追加到 TextData 数据列上的筛选器。
SQL 跟踪作为一种安全预防措施,会自动从跟踪中省略任何影响密码的、与安全相关的存储过程。 此安全机制不可配置,并且始终有效。 此机制阻止有权跟踪 SQL Server 上的所有活动的用户捕获密码。
下列与安全相关的存储过程会受到监视,而不会将输出写入 TextData 数据列:
- sp_addapprole
- sp_adddistpublisher
- sp_adddistributiondb
- sp_adddistributor
- sp_addlinkedserver
- sp_addlinkedsrvlogin
- sp_addlogin
- sp_addmergepullsubscription_agent
- sp_addpullsubscription_agent
- sp_addremotelogin
- sp_addsubscriber
- sp_approlepassword
- sp_changedistpublisher
- sp_changesubscriber
- sp_dsninfo
- sp_helpsubscription_properties
- sp_link_publication
- sp_password
- sp_setapprole