トレース フラグ (Transact-SQL)

トレース フラグは、サーバー固有の特性を設定したり、特定の動作を切り替えるときに使用します。 たとえば、SQL Server インスタンスの起動時にトレース フラグ 3205 が設定されている場合、テープ ドライバーのハードウェア圧縮が無効になります。 トレース フラグは、パフォーマンスの問題を診断したり、ストアド プロシージャや複雑なシステムをデバッグするときによく使用されます。

次の表は、SQL Server で使用できるトレース フラグの一覧とその説明です。

注意

トレース フラグの動作は、今後の SQL Server のリリースではサポートされない可能性もあります。

トレース フラグ

説明

260

拡張ストアド プロシージャのダイナミックリンク ライブラリ (DLL) に関するバージョン情報を出力します。 __GetXpVersion() の詳細については、「拡張ストアド プロシージャの作成」を参照してください。

スコープ: グローバルまたはセッション

1204

デッドロックに関係しているロックのリソースと種類、および影響を受けている現在のコマンドを返します。

スコープ: グローバルのみ

1211

メモリの負荷またはロック数に基づいて、ロックのエスカレーションを無効にします。 SQL Server データベース エンジンにおいて、行ロックまたはページ ロックはテーブル ロックにエスカレートされません。

トレース フラグを使用すると、過剰な数のロックが生成されることがあり、 これが原因でデータベース エンジンのパフォーマンスが悪化したり、メモリ不足によって 1204 エラー (ロック リソース割り当て不能) が発生する可能性があります。

トレース フラグ 1211 と 1224 の両方を設定した場合、1224 よりも 1211 が優先されます。 ただし、トレース フラグ 1211 では、メモリに負荷がかかっていたとしてもすべての場合のエスカレーションが無効になるわけではないので、1224 の使用をお勧めします。 1224 を使用すると、多数のロックが使用中でも "ロック不足" エラーを回避することができます。

スコープ:グローバルまたはセッション

1222

デッドロックに関係しているロックのリソースと種類、および影響を受けている現在のコマンドを、どの XSD スキーマにも準拠しない XML 形式で返します。

スコープ:グローバルのみ

1224

ロック数に基づいてロックのエスカレーションを無効にします。 ただし、メモリに負荷がかかっていてもロックのエスカレーションは有効にできます。 データベース エンジン では、ロック オブジェクトで使用されるメモリ量が次のいずれかの条件を超えた場合に、行ロックまたはページ ロックがテーブル ロック (またはパーティション ロック) にエスカレートされます。

  • データベース エンジン で使用するメモリの 40%。 これは、sp_configurelocks パラメーターが 0 に設定されている場合にのみ適用されます。

  • sp_configurelocks パラメーターを使用して構成されるロック メモリの 40%。 詳細については、「サーバー構成オプション」を参照してください。

トレース フラグ 1211 と 1224 の両方を設定した場合、1224 よりも 1211 が優先されます。 ただし、トレース フラグ 1211 では、メモリに負荷がかかっていたとしてもすべての場合のエスカレーションが無効になるわけではないので、1224 の使用をお勧めします。 1224 を使用すると、多数のロックが使用中でも "ロック不足" エラーを回避することができます。

注意

テーブル レベルまたは HoBT レベルの粒度へのロックのエスカレーションは、ALTER TABLE ステートメントの LOCK_ESCALATION オプションで制御することもできます。

スコープ: グローバルまたはセッション

1448

非同期セカンダリで変更の受信が確認されていない場合でもレプリケーション ログ リーダーが前へ移動できるようにします。 このトレース フラグが有効でも、ログ リーダーは常に同期セカンダリを待機します。 ログ リーダーは同期セカンダリの最小 ack を超えることはありません。 このトレース フラグは、可用性グループ、可用性データベース、またはログ リーダー インスタンスだけでなく、SQL Server のインスタンスにも適用されます。 再起動しなくてもすぐに有効になります。 このトレース フラグは、事前にアクティブにすることも、非同期セカンダリが失敗したときにアクティブにすることもできます。

2528

DBCC CHECKDB、DBCC CHECKFILEGROUP、および DBCC CHECKTABLE によるオブジェクトの並列検査を無効にします。 既定では、並列処理の次数はクエリ プロセッサによって自動的に決定されます。 並列処理の最大限度は並列クエリと同様に構成します。 詳細については、「max degree of parallelism サーバー構成オプションの構成」を参照してください。

並列 DBCC は、通常、有効のままにします。 DBCC CHECKDB では、検査対象のテーブルまたはテーブルの集合ごとに、クエリ プロセッサによって並列処理が再計算され自動的に調節されます。 場合によっては、サーバーがほぼアイドル状態になっているときに検査が開始されることがあります。 検査が完了する前に負荷が増加することがわかっている場合、管理者は並列処理を手動で低くするか無効にできます。

DBCC の並列チェックを無効にすると、DBCC の完了に時間がかかる可能性があります。また、TABLOCK 機能を有効にし、かつ、並列処理をオフにして DBCC を実行した場合、テーブルのロック時間が長くなる可能性があります。

スコープ:グローバルまたはセッション

3042

既定のバックアップ圧縮の事前割り当てアルゴリズムをバイパスして、最終的なサイズに到達するまで、必要な場合にのみバックアップ ファイルが拡張されるようにします。 このトレース フラグは、圧縮されたバックアップに実際に必要なサイズだけを割り当てることによって、容量を節約する必要がある場合に便利です。 このトレース フラグを使用すると、わずかなパフォーマンスの低下 (バックアップ操作の期間が長くなる可能性) が発生することがあります。

事前割り当てアルゴリズムの詳細については、「バックアップの圧縮 (SQL Server)」を参照してください。

3205

既定では、テープ ドライブでハードウェア圧縮がサポートされている場合、DUMP または BACKUP ステートメントではハードウェア圧縮が行われます。 このトレース フラグを使用すると、テープ デバイスのハードウェア圧縮を無効にできます。 この機能は、圧縮がサポートされていないサイトやテープ ドライブとの間でテープを交換する場合に便利です。

スコープ:グローバルまたはセッション

3226

既定では、バックアップ操作が成功するたびに、SQL Server エラー ログおよびシステム イベント ログにエントリが 1 つ追加されます。 頻度の高いログ バックアップを作成すると、これらの成功メッセージがすぐに蓄積され、他のメッセージを探すのが困難になるほどエラー ログが大きくなることがあります。

このトレース フラグを使用すると、これらのログ エントリを除外できます。 この機能は、頻度の高いログ バックアップを実行している場合やスクリプトがこれらのエントリに依存していない場合に役立ちます。

3608

SQL Server で、master データベース以外のすべてのデータベースを自動的に開始および復旧しないようにします。 tempdb を必要とする操作が開始されると、model が復旧され、tempdb が作成されます。 ユーザー データベースはアクセス時に開始および復旧されます。 スナップショット分離や READ COMMITTED スナップショットなど、一部の機能を使用できない場合があります。 システム データベースの移動ユーザー データベースの移動に使用してください。 通常の運用中は使用しないでください。

3625

"******" を使用する一部のエラー メッセージのパラメーターをマスクすることによって、sysadmin 固定サーバー ロールのメンバーでないユーザーに返される情報の量を制限します。 これは、機密情報の公開を防ぐために役立ちます。

スコープ:グローバルのみ

4199

複数のトレース フラグで以前に行った複数のクエリ オプティマイザーの変更を制御します。 詳細については、この Microsoft サポート技術情報を参照してください。

スコープ:グローバルまたはセッション

4616

アプリケーション ロールに対して、サーバー レベルのメタデータを参照可能にします。 SQL Server では、アプリケーション ロールはサーバーレベルのプリンシパルに関連付けられていないため、所有するデータベース外のメタデータにはアクセスできません。 これは、以前のバージョンの SQL Server の動作から変更されています。 このグローバル フラグを設定すると、新しい制限は無効になり、アプリケーション ロールはサーバーレベルのメタデータにアクセスできるようになります。

スコープ:グローバルのみ

6527

CLR 統合でメモリ不足例外が最初に発生した場合のメモリ ダンプの生成を無効にします。 既定では、SQL Server では CLR でメモリ不足例外が最初に発生した場合、小さいメモリ ダンプが生成されます。 トレース フラグの動作は次のとおりです。

  • スタートアップ トレース フラグとして使用される場合、メモリ ダンプは生成されません。 ただし、その他のトレース フラグが使用されると、メモリ ダンプが生成される場合があります。

  • このトレース フラグが実行中のサーバーで有効になっている場合、メモリ ダンプはその時点から自動的には生成されなくなります。 ただし、CLR のメモリ不足例外のためにメモリ ダンプが既に生成されている場合は、このトレース フラグの効果はありません。

スコープ:グローバルのみ

7806

SQL Server Express で専用管理者接続 (DAC) を有効にします。 既定では、SQL Server Express で予約されている DAC リソースはありません。 詳細については、「データベース管理者用の診断接続」を参照してください。

スコープ:グローバルのみ

8032

キャッシュ制限パラメーターを SQL Server 2005 RTM の設定に戻します。これにより、一般に、より大きいキャッシュに対応できるようになります。 この設定は、頻繁に再利用されるキャッシュ エントリがキャッシュに収まらない場合や、optimize for ad hoc workloads サーバー構成オプションでプラン キャッシュの問題を解決できない場合に使用します。

注記注意

トレース フラグ 8032 を使用した場合、キャッシュが大きいために他のメモリ コンシューマー (バッファー プールなど) で利用できるメモリが少なくなると、パフォーマンスが低下することがあります。

8207

トランザクション レプリケーションに対して単一の更新を有効にします。 サブスクライバーへの更新は、DELETE と INSERT のペアとしてレプリケートできます。 これは、UPDATE トリガーの起動など、ビジネス ルールを満たさない場合があります。 トレース フラグ 8207 を使用すると、1 行 (単一の更新) のみに影響する一意の列への更新は、DELETE または INSERT のペアとしてではなく、UPDATE としてレプリケートされます。 更新が一意の制約がある列に影響を与える場合、または更新が複数行に影響する場合、更新は引き続き DELETE または INSERT のペアとしてレプリケートされます。

9485

DBCC SHOW_STATISTICS に対する SELECT 権限を無効にします。

説明

SQL Server には、セッションとグローバルという 2 種類のトレース フラグがあります。 セッション トレース フラグは、1 つの接続についてアクティブで、その接続に対してのみ表示可能です。 グローバル トレース フラグは、サーバー レベルで設定され、サーバー上のすべての接続に対して表示可能です。 フラグには、グローバルとしてのみ有効化できるフラグと、グローバルまたはセッション スコープのどちらかで有効化できるフラグがあります。

次の規則が適用されます。

  • グローバル トレース フラグは、グローバルに有効化する必要があります。 グローバルに有効化しない場合、そのトレース フラグは機能しません。 グローバル トレース フラグは、-T コマンド ライン オプションを使用して、起動時に有効化することをお勧めします。

  • トレース フラグのスコープがグローバルまたはセッションのどちらかの場合、適切なスコープで有効化できます。 セッション レベルで有効化したトレース フラグは、別のセッションには影響せず、セッションを開いた SPID がログアウトすると無効になります。

トレース フラグを有効または無効にするには、次のいずれかの方法を使用します。

  • DBCC TRACEON と DBCC TRACEOFF コマンドを使用する。

    たとえば、DBCC TRACEON 2528 を考えてみます。トレース フラグをグローバルに有効化するには、DBCC TRACEON を引数 -1 と共に使用し、DBCC TRACEON (2528, -1) のように指定します。 グローバル トレース フラグをオフにするには、DBCC TRACEOFF に引数 -1 を指定します。

  • スタートアップ オプション -T を使用して、起動時にトレース フラグを有効に設定する。

    スタートアップ オプション -T を使用すると、トレース フラグをグローバルに有効化できます。 スタートアップ オプションでは、セッションレベルのトレース フラグは有効化できません。 スタートアップ オプションの詳細については、「データベース エンジン サービスのスタートアップ オプション」を参照してください。

現在有効なトレース フラグを確認するには、DBCC TRACESTATUS コマンドを使用します。

使用例

次の例では、DBCC TRACEON を使用してトレース フラグ 3205 を有効に設定します。

DBCC TRACEON (3205,-1)

関連項目

参照

データ型 (Transact-SQL)

DBCC INPUTBUFFER (Transact-SQL)

DBCC OUTPUTBUFFER (Transact-SQL)

DBCC TRACEOFF (Transact-SQL)

DBCC TRACEON (Transact-SQL)

DBCC TRACESTATUS (Transact-SQL)

EXECUTE (Transact-SQL)

SELECT (Transact-SQL)

SET NOCOUNT (Transact-SQL)