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

更新 : 2007 年 9 月 15 日

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

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

ms188396.note(ja-jp,SQL.90).gifメモ :
トレース フラグの動作は、今後の SQL Server のリリースではサポートされない可能性もあります。
トレース フラグ 説明

260

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

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

1204

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

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

1211

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

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

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

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

1222

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

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

1224

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

  • データベース エンジンで使用されるメモリの 40% (AWE (Address Windowing Extension) を使用するメモリ割り当てを除く)。これは、sp_configurelocks パラメータが 0 に設定されている場合にのみ適用されます。
  • sp_configurelocks パラメータを使用して構成されるロック メモリの 40%。詳細については、「サーバー構成オプションの設定」を参照してください。

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

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

2528

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

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

ただし、並列検査を無効にすると、データベースの全体的なパフォーマンスが低下する場合があります。並列処理の次数を低くすると、スキャンの対象となるトランザクション ログの量が増加します。これによって、さらに多くの tempdb 領域が必要になり、DBCC での検査の完了までにかかる時間が大幅に増加します。TABLOCK 機能を有効にし、かつ、並列処理をオフにして DBCC を実行した場合、テーブルのロック時間が長くなる可能性があります。

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

3205

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

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

3625

エラー メッセージで返される情報の量を制限します。詳細については、「メタデータ表示の構成」を参照してください。

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

4616

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

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

7806

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

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

解説

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

この場合に当てはまる規則を以下に示します。

  • グローバル トレース フラグは、グローバルに有効化する必要があります。グローバルに有効化しない場合は機能しません。グローバル トレース フラグは、-T コマンド ライン オプションを使用して、起動時に有効化することをお勧めします。
  • トレース フラグのスコープがグローバルまたはセッションのどちらかの場合、適切なスコープで有効化できます。セッション レベルで有効化したトレース フラグは、別のセッションには影響せず、セッションを開いた SPID がログアウトすると無効になります。

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

  • DBCC TRACEON と DBCC TRACEOFF コマンドを使用する。
    たとえば、DBCC TRACEON 2528 を考えてみます。トレース フラグをグローバルに有効化するには、DBCC TRACEON を引数 -1 と共に使用し、DBCC TRACEON 2528, -1 のように指定します。グローバル トレース フラグをオフにするには、DBCC TRACEOFF に引数 -1 を指定します。
  • スタートアップ オプション -T を使用して、起動時にトレース フラグを有効に設定する。
    スタートアップ オプション -T を使用すると、トレース フラグをグローバルに有効化できます。スタートアップ オプションでは、セッションレベルのトレース フラグは有効化できません。スタートアップ オプションの詳細については、「SQL Server サービスのスタートアップ オプションの使用」を参照してください。

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

動作の変更

SQL Server 2000 では、デッドロックをエラー ログに記録するには単に DBCC TRACEON (1204) と指定するだけですが、SQL Server 2005 では、セッションレベルのフラグはデッドロック モニタ スレッドに表示されないため、フラグをグローバルに有効化する必要があります。

動作の変更の詳細については、「SQL Server 2005 におけるデータベース エンジン機能の重大な変更」を参照してください。

次の例では、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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2007 年 9 月 15 日

変更内容 :
  • トレース フラグ 1224 のスコープ情報を修正しました。

2006 年 4 月 14 日

新しい内容 :
  • トレース フラグ 7806 の説明を追加。
  • トレース フラグ 1224 よりも 1211 が優先されることに関する情報を追加。
  • 各トレース フラグのスコープ情報を追加。
  • 動作の変更を追加。

2005 年 12 月 5 日

新しい内容 :
  • トレース フラグ 4616 と 3625 の説明を追加。