筛选跟踪

筛选器将限制跟踪内收集的事件。如果未设置筛选器,则跟踪输出中将返回选定事件类的所有事件。例如,如果将跟踪中的 Windows 用户名限定为特定用户,将仅输出与那些用户相关的数据。

并不一定要为跟踪设置筛选器。但是,筛选器会将跟踪过程中的开销降到最低。筛选器将返回有针对性的数据,这样会使性能分析和审核变得更容易。

若要筛选跟踪中捕获的事件数据,请选择跟踪事件准则(仅返回跟踪中的相关数据)。例如,可以包括或排除监视跟踪中的特定应用程序的活动。

注意注意

SQL Server Profiler创建跟踪时,默认情况下,将筛选出自己的活动。

又如,如果监视查询以确定执行时间最长的批处理,请将跟踪事件准则设置为仅监视那些执行时间超过 30 秒的批处理(CPU 最小值为 30,000 毫秒)。

筛选器创建指南

通常,按照下列步骤筛选跟踪。

  1. 在跟踪中标识要包括的事件。

  2. 标识包含所需信息的数据和数据列。

  3. 标识所需数据的子集并基于该数据子集定义筛选器。

例如,您可能只对超过一定时间长度的事件感兴趣。您可以创建包括事件(其中 Duration 数据列超过 300 毫秒)的跟踪。跟踪将不包括在 300 毫秒内完成的事件。

您可以使用 SQL Server Profiler 或 Transact-SQL 存储过程创建筛选器。

在跟踪模板中筛选事件

修改筛选器

如何修改筛选器 (SQL Server Profiler)

筛选器可用性取决于数据列。某些数据列无法筛选。可筛选的数据列只能使用部分关系运算符进行筛选,如下表所示。

关系运算符

运算符

说明

类似于

LIKE

指定跟踪事件数据必须类似于输入文本。允许使用多个值。

不类似于

NOT LIKE

指定跟踪事件数据不能与输入文本类似。允许使用多个值。

等于

=

指定跟踪事件数据必须等于输入的值。允许使用多个值。

不等于

<>

指定跟踪事件数据不能等于输入的值。允许使用多个值。

大于

>

指定跟踪事件数据必须大于输入的值。

大于或等于

>=

指定跟踪事件数据必须大于或等于输入的值。

小于

<

指定跟踪事件数据必须小于输入的值。

小于或等于

<=

指定跟踪事件数据必须小于或等于输入的值。

下表列出了可筛选数据列和可用关系运算符。

数据列

关系运算符

ApplicationName

LIKE、NOT LIKE

BigintData1

=, <>, >=, <=

BigintData2

=, <>, >=, <=

BinaryData

使用 SQL Server Profiler筛选此数据列中的事件。有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪

ClientProcessID

=, <>, >=, <=

ColumnPermissions

=, <>, >=, <=

CPU

=, <>, >=, <=

DatabaseID

=, <>, >=, <=

DatabaseName

LIKE、NOT LIKE

DBUserName

LIKE、NOT LIKE

Duration

=, <>, >=, <=

EndTime

>=, <=

Error

=, <>, >=, <=

EventSubClass

=, <>, >=, <=

FileName

LIKE、NOT LIKE

GUID

使用 SQL Server Profiler筛选此数据列中的事件。有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪

Handle

=, <>, >=, <=

HostName

LIKE、NOT LIKE

IndexID

=, <>, >=, <=

IntegerData

=, <>, >=, <=

IntegerData2

=, <>, >=, <=

IsSystem

=, <>, >=, <=

LineNumber

=, <>, >=, <=

LinkedServerName

LIKE、NOT LIKE

LoginName

LIKE、NOT LIKE

LoginSid

使用 SQL Server Profiler筛选此数据列中的事件。有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪

MethodName

LIKE、NOT LIKE

Mode

=, <>, >=, <=

NestLevel

=, <>, >=, <=

NTDomainName

LIKE、NOT LIKE

NTUserName

LIKE、NOT LIKE

ObjectID

=, <>, >=, <=

ObjectID2

=, <>, >=, <=

ObjectName

LIKE、NOT LIKE

ObjectType

=, <>, >=, <=

Offset

=, <>, >=, <=

OwnerID

=, <>, >=, <=

OwnerName

LIKE、NOT LIKE

ParentName

LIKE、NOT LIKE

Permissions

=, <>, >=, <=

ProviderName

LIKE、NOT LIKE

Reads

=, <>, >=, <=

RequestID

=, <>, >=, <=

RoleName

LIKE、NOT LIKE

RowCounts

=, <>, >=, <=

SessionLoginName

LIKE、NOT LIKE

Severity

=, <>, >=, <=

SourceDatabaseID

=, <>, >=, <=

SPID

=, <>, >=, <=

SqlHandle

使用 SQL Server Profiler筛选此数据列中的事件。有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪

StartTime

>=, <=

State

=, <>, >=, <=

Success

=, <>, >=, <=

TargetLoginName

LIKE、NOT LIKE

TargetLoginSid

使用 SQL Server Profiler筛选此数据列中的事件。有关详细信息,请参阅使用 SQL Server Profiler 筛选跟踪

TargetUserName

LIKE、NOT LIKE

TextData1

LIKE、NOT LIKE

TransactionID

=, <>, >=, <=

Type

=, <>, >=, <=

Writes

=, <>, >=, <=

XactSequence

=, <>, >=, <=

1 如果从 osql 实用工具或 sqlcmd 实用工具跟踪事件,则始终将 % 追加到 TextData 数据列上的筛选器。

SQL 跟踪作为一种安全预防措施,会自动从跟踪中省略任何影响密码的、与安全相关的存储过程。此安全机制不可配置,并且始终有效。此机制阻止有权跟踪 SQL Server 上的所有活动的用户捕获密码。

下列与安全相关的存储过程会受到监视,而不会将输出写入 TextData 数据列:

sp_addapprole (Transact-SQL)

sp_adddistpublisher (Transact-SQL)

sp_adddistributiondb (Transact-SQL)

sp_adddistributor (Transact-SQL)

sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)

sp_addlogin (Transact-SQL)

sp_addmergepullsubscription_agent (Transact-SQL)

sp_addpullsubscription_agent (Transact-SQL)

sp_addremotelogin (Transact-SQL)

sp_addsubscriber (Transact-SQL)

sp_approlepassword (Transact-SQL)

sp_changedistpublisher (Transact-SQL)

sp_changesubscriber (Transact-SQL)

sp_dsninfo (Transact-SQL)

sp_helpsubscription_properties (Transact-SQL)

sp_link_publication (Transact-SQL)

sp_password (Transact-SQL)

sp_setapprole (Transact-SQL)

请参阅

概念