トレースへのフィルターの適用

フィルターを使用すると、トレースに出力するイベントを制限することができます。 フィルターが設定されていない場合は、選択したイベント クラスのすべてのイベントがトレースに出力されます。 たとえば、トレースに出力する Windows ユーザーとして特定のユーザー名を指定すると、それらのユーザーのデータのみが出力されます。

トレースのフィルター設定は必須ではありません。 ただし、フィルターを設定すると、トレース中に発生するオーバーヘッドを低減できます。 フィルターによって、データを絞り込むことができ、パフォーマンス分析および監査が簡略化されます。

トレースに出力するイベント データを制限するには、必要なデータだけがトレースに記録されるようにイベントのトレース条件を選択します。 たとえば、特定のアプリケーションの動作状況をトレースの対象としたり、トレースから除外したりできます。

注意

SQL Server Profiler でトレースを作成する場合、既定では、この Profiler 自身の動作状況はトレースから除外されます。

たとえば、クエリを監視して、実行に長時間かかるバッチを調べる場合、イベントのトレース条件を設定することで、実行時間が 30 秒を超えるバッチだけを監視できます (CPU 時間の最小値は 30,000 ミリ秒です)。

フィルター作成のガイドライン

トレースにフィルターを適用するには、次の手順を実行します。

  1. トレースの対象とするイベントを決めます。

  2. 必要な情報を保存するデータおよびデータ列を決めます。

  3. 必要なデータのサブセットを決め、そのデータのサブセットに基づいてフィルターを設定します。

たとえば、ある一定の時間よりも長くかかるイベントをトレースで出力するとします。 その場合、Duration データ列が 300 ミリ秒よりも長いイベントを出力するトレースを作成できます。 300 ミリ秒以内に完了したイベントはトレースから除外されます。

フィルターは、SQL Server Profiler または Transact-SQL ストアド プロシージャを使用して作成できます。

トレース テンプレートを使用してイベントにフィルターを適用するには

トレース内のイベントへのフィルターの適用 (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

TextData 1

LIKE、NOT LIKE

TransactionID

=, <>, >=, <=

=, <>, >=, <=

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)