sys.database_query_store_options (Transact-SQL)

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

このデータベースのクエリ ストア オプションを返します。

適用対象: SQL Server (SQL Server 2016 (13.x) 以降)、SQL Database。

列名 データ型 説明
desired_state smallint ユーザーによって明示的に設定された、クエリ ストアの目的の操作モードを示します。
0 = OFF
1 = READ_ONLY
2 = READ_WRITE
4 = READ_CAPTURE_SECONDARY
desired_state_desc nvarchar(60) クエリ ストアの目的の操作モードのテキスト説明:
OFF
READ_ONLY
READ_WRITE
READ_CAPTURE_SECONDARY
actual_state smallint クエリ ストアの操作モードを示します。 ユーザーが必要とする必要な状態の一覧に加えて、実際の状態はエラー状態になる可能性があります。
0 = OFF
1 = READ_ONLY
2 = READ_WRITE
3 = ERROR
4 = READ_CAPTURE_SECONDARY
actual_state_desc nvarchar(60) クエリ ストアの実際の操作モードのテキスト説明。
OFF
READ_ONLY
READ_WRITE
ERROR
READ_CAPTURE_SECONDARY

実際の状態が目的の状態と異なる場合があります。
- データベースが読み取り専用モードに設定されている場合、またはクエリ ストアサイズが構成されているクォータを超えた場合、クエリ ストアは、ユーザーが読み取り/書き込みを指定した場合でも、読み取り専用モードで動作する可能性があります。
- 極端なシナリオでは、クエリ ストア内部エラーが原因で ERROR 状態になる可能性があります。 SQL Server 2017 (14.x) 以降では、これが発生した場合、影響を受けたデータベース内で sp_query_store_consistency_check ストアド プロシージャを実行することで、クエリ ストアを復旧させることができます。 実行中sp_query_store_consistency_checkが機能しない場合、または SQL Server 2016 (13.x) を使用している場合は、 を実行してデータをクリアする必要がありますALTER DATABASE [YourDatabaseName] SET QUERY_STORE CLEAR ALL;
readonly_reason int desired_state_descがREAD_WRITEされ、actual_state_descがREAD_ONLYされると、readonly_reasonはビット マップを返して、クエリ ストアが読み取り専用モードである理由を示します。

1 - データベースが読み取り専用モードである

2 - データベースがシングル ユーザー モードである

4 - データベースが緊急モードである

8 - データベースはセカンダリ レプリカです (可用性グループとデータベース geo レプリケーションAzure SQL適用されます)。 この値は、 読み取り可能な セカンダリ レプリカでのみ効果的に確認できます

65536 - クエリ ストアが オプションによって設定されたサイズ制限にMAX_STORAGE_SIZE_MB達しました。 このオプションの詳細については、「 ALTER DATABASE SET オプション (Transact-SQL)」を参照してください。

131072 - クエリ ストア内の異なるステートメントの数が内部メモリ制限に達しました。 クエリ ストアを読み取り/書き込みモードに転送できるようにするには、不要なクエリを削除するか、より高いサービス レベルにアップグレードすることを検討してください。


262144 - ディスクに保持されるのを待機しているメモリ内アイテムのサイズが内部メモリ制限に達しました。 クエリ ストアは、メモリ内アイテムがディスクに保持されるまで、一時的に読み取り専用モードになります。


524288 - データベースがディスク サイズの制限に達しました。 クエリ ストアはユーザー データベースの一部であるため、データベースに使用可能な領域がなくなった場合は、クエリ ストアがこれ以上拡張できないことを意味します。


クエリ ストア操作モードを読み取り/書き込みに切り替えるには、「クエリ ストアを使用したベスト プラクティスの「クエリ ストアがクエリ データを継続的に収集することを確認する」セクションを参照してください。
current_storage_size_mb bigint ディスク上のクエリ ストアのサイズ (メガバイト単位)。
flush_interval_seconds bigint クエリ ストアデータをディスクに定期的にフラッシュする期間 (秒単位)。 既定値は 900 (15 分) です。

ステートメントを使用して変更します ALTER DATABASE <database> SET QUERY_STORE (DATA_FLUSH_INTERVAL_SECONDS = <interval>)
interval_length_minutes bigint 統計集計間隔 (分単位)。 任意の値は使用できません。 1、5、10、15、30、60、1440 分のいずれかを使用します。 既定値は 60 分です。
max_storage_size_mb bigint クエリ ストアの最大ディスク サイズ (MB)。 既定値は、2017 (14.x) SQL Serverまで 100 MB、SQL Server 2019 (15.x) 以降では 1 GB です。
SQL Database Premium Edition の既定値は 1 GB、SQL Database Basic エディションの既定値は 10 MB です。

ステートメントを使用して変更します ALTER DATABASE <database> SET QUERY_STORE (MAX_STORAGE_SIZE_MB = <size>)
stale_query_threshold_days bigint クエリの情報がクエリ ストアに保持される日数。 既定値は 30 です。 アイテム保持ポリシーを無効にするには、0 に設定します。
SQL Database Basic エディションの場合、既定の日数は 7 日です。

ステートメントを使用して変更します ALTER DATABASE <database> SET QUERY_STORE ( CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = <value> ) )
max_plans_per_query bigint 格納されているプランの最大数を制限します。 既定値は 200 です。 最大値に達すると、クエリ ストアはそのクエリの新しいプランのキャプチャを停止します。 0 に設定すると、キャプチャされたプランの数に関する制限が解除されます。

ステートメントを使用して変更します ALTER DATABASE<database> SET QUERY_STORE (MAX_PLANS_PER_QUERY = <n>)
query_capture_mode smallint 現在アクティブなクエリ キャプチャ モード:

1 = ALL - すべてのクエリがキャプチャされます。 これは、SQL Server (SQL Server 2016 (13.x) 以降) の既定の構成値です。

2 = AUTO - 実行数とリソース消費量に基づいて関連するクエリをキャプチャします。 これは、SQL Databaseの既定の構成値です。

3 = NONE - 新しいクエリのキャプチャを停止します。 クエリ ストアは、既にキャプチャされたクエリのコンパイルと実行時の統計情報を収集し続けます。 重要なクエリのキャプチャが間違っている可能性があるため、この構成は慎重に使用してください。

4 = CUSTOM - QUERY_CAPTURE_POLICY オプションを使用してクエリ キャプチャ ポリシーをさらに制御できます。
適用対象: SQL Server 2019 (15.x) 以降。
query_capture_mode_desc nvarchar(60) クエリ ストアの実際のキャプチャ モードのテキスト説明:

ALL (SQL Server 2016 (13.x) の既定値)

AUTO (SQL Databaseの既定値)

NONE

CUSTOM
capture_policy_execution_count int クエリ キャプチャ モードのカスタム ポリシー オプション。 評価期間中、クエリを実行する回数を定義します。 既定値は 30 です。
適用対象: SQL Server 2019 (15.x) 以降。
capture_policy_total_compile_cpu_time_ms bigint クエリ キャプチャ モードのカスタム ポリシー オプション。 評価期間中、クエリで使用されるコンパイル CPU 時間の合計経過時間を定義します。 既定値は 1000 です。
適用対象: SQL Server 2019 (15.x) 以降。
capture_policy_total_execution_cpu_time_ms bigint クエリ キャプチャ モードのカスタム ポリシー オプション。 評価期間中、クエリによって使用される実行 CPU の合計経過時間を定義します。 既定値は、100 です。
適用対象: SQL Server 2019 (15.x) 以降。
capture_policy_stale_threshold_hours int クエリ キャプチャ モードのカスタム ポリシー オプション。 クエリをキャプチャすべきかどうかを決定する評価の間隔を定義します。 既定値は 24 時間です。
適用対象: SQL Server 2019 (15.x) 以降。
size_based_cleanup_mode smallint データの総量が最大サイズに近づいたときに、クリーンアップを自動的にアクティブにするかどうかを制御します。

0 = OFF - サイズベースのクリーンアップは自動的にアクティブ化されません。

1 = AUTO - ディスク上のサイズがmax_storage_size_mb90% に達すると、サイズベースのクリーンアップが自動的にアクティブ化されます。 これは既定の構成値です。

サイズのクリーンアップでは、まず最も安価で最も古いクエリを削除します。 max_storage_size_mbの約 80% に達すると停止します。
size_based_cleanup_mode_desc nvarchar(60) クエリ ストアの実際のサイズベースのクリーンアップ モードのテキスト説明:

OFF
AUTO (既定値)
wait_stats_capture_mode smallint 待機統計のキャプチャクエリ ストア実行するかどうかを制御します。

0 = OFF
1 = ON
適用対象: SQL Server 2017 (14.x) 以降。
wait_stats_capture_mode_desc nvarchar(60) 実際の待機統計キャプチャ モードのテキスト説明:

OFF
ON (既定値)
適用対象: SQL Server 2017 (14.x) 以降。
actual_state_additional_info nvarchar(8000) 現在使用されていません。

アクセス許可

VIEW DATABASE STATE アクセス許可が必要です。

注釈

actual_state_desc READ_CAPTURE_SECONDARY の値は、セカンダリ レプリカのクエリ ストアが有効になっている場合の予期される状態です。 詳細については、「セカンダリ レプリカのクエリ ストア」を参照してください。

次の手順