sys.database_query_store_options (Transact-SQL)

適用於: SQL Server 2016 (13.x) 以上版本 Azure SQL DatabaseAzure SQL 受控執行個體Azure 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 = 錯誤
4 = READ_CAPTURE_SECONDARY
actual_state_desc nvarchar(60) 查詢存放區實際作業模式的文字描述。
OFF
READ_ONLY
READ_WRITE
錯誤
READ_CAPTURE_SECONDARY

實際狀態與所需狀態不同的情況:
- 如果資料庫設定為唯讀模式,或如果查詢存放區大小超過其設定的配額,則即使使用者指定讀寫,查詢存放區仍可能會以唯讀模式運作。
- 在極端情況下,查詢存放區可能會因為內部錯誤而進入錯誤狀態。 從 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 - 資料庫是次要複本(適用于可用性群組和 Azure SQL Database 異地複寫)。 此值只能在可 讀取的次要複本上 有效觀察

65536 - 查詢存放區已達到 選項所 MAX_STORAGE_SIZE_MB 設定的大小限制。 如需此選項的詳細資訊,請參閱 ALTER DATABASE SET 選項(Transact-SQL)。

131072 - 查詢存放區中的不同語句數目已達到內部記憶體限制。 請考慮移除您不需要的查詢或升級至較高的服務層級,以啟用將查詢存放區傳輸至讀寫模式。


262144 - 等候在磁片上保存的記憶體內部專案大小已達到內部記憶體限制。 查詢存放區會暫時處於唯讀模式,直到記憶體內部專案保存在磁片上為止。


524288 - 資料庫已達到磁片大小限制。 查詢存放區是使用者資料庫的一部分,因此,如果資料庫沒有更多可用的空間,這表示查詢存放區無法再進一步成長。


若要將查詢存放區作業模式切換回讀寫,請參閱 使用查詢存放區 確認查詢存放區正在持續 收集查詢資料一節 。
current_storage_size_mb bigint 磁片上的查詢存放區大小以 MB 為單位。
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 為單位。 預設值為 100 MB,最高為 SQL Server 2017 (14.x),從 SQL Server 2019 (15.x) 開始為 1 GB
針對 SQL Database Premium 版本,預設值為 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 基本版,預設值為 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 - 當磁片大小達到 90% max_storage_size_mb 時,會自動啟動大小型清除。 這是預設組態值。

以大小為依據之清除會先移除成本最高和最舊的查詢。 當達到大約 80% max_storage_size_mb 時,就會停止。
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值是預期狀態。 如需詳細資訊,請參閱次要複本查詢資料存放區

下一步