sys.database_query_store_options (Transact-SQL)

适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics

返回此数据库的查询存储选项。

适用于:SQL 数据库 SQL Server (SQL Server 2016 (13.x) 及更高版本) 。

列名称 数据类型 说明
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
ERROR
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 - 数据库是辅助副本 (replica) (适用于可用性组和Azure SQL数据库异地复制) 。 只能在 可读 次要副本上有效地观察此值

65536 - 查询存储已达到 选项设置MAX_STORAGE_SIZE_MB的大小限制。 有关此选项的详细信息,请参阅 alter DATABASE SET options (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 (MB) 为单位。 默认值为 100 MB(截至 2017 SQL Server 2017 (14.x) ),从 SQL Server 2019 开始为 1 GB, (15.x) 。
对于 SQL 数据库 高级版,默认值为 1 GB,对于 SQL 数据库 基本版,默认值为 10 MB 。

使用 语句进行更改 ALTER DATABASE <database> SET QUERY_STORE (MAX_STORAGE_SIZE_MB = <size>)
stale_query_threshold_days bigint 查询信息保留在查询存储中的天数。 默认值为 30。 设置为 0 可禁用保留策略。
对于 SQL 数据库 基本版,默认值为 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 数据库的默认配置值。

3 = NONE - 停止捕获新查询。 查询存储将继续为已经捕获的查询收集编译和运行时统计信息。 请谨慎使用此配置,因为可能会错过重要查询的捕获。

4 = CUSTOM - 允许使用 QUERY_CAPTURE_POLICY选项对查询捕获策略进行额外控制。
适用于:SQL Server 2019 (15.x) 及更高版本。
query_capture_mode_desc nvarchar(60) 查询存储的实际捕获模式的文本说明:

SQL Server 2016 (13.x) ) 的所有 (默认值

SQL 数据库) 的 AUTO (默认值



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_mb的 90% 时,将自动激活基于 大小的清理。 这是默认的配置值。

基于大小的清除首先会删除成本最低和最旧的查询。 当达到大约 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是预期状态。 有关详细信息,请参阅次要副本查询存储

后续步骤