sys.database_query_store_options (Transact-SQL)

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

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

列名称 数据类型 描述
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

在某些情况下,实际状态与所需状态不同:
- 如果数据库设置为只读模式,或者如果查询存储大小超过其配置的配额,则即使指定读写,查询存储也可能在只读模式下运行。
- 在极端情况下,查询存储可能会由于内部错误而进入错误状态。 在 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当 is READ_WRITEactual_state_desc is READ_ONLY时,readonly_reason返回位映射以指示查询存储处于只读模式的原因。

1 - 数据库处于只读模式
2 - 数据库处于单用户模式
4 - 数据库处于紧急模式
8- 数据库是辅助副本 (replica)(适用于可用性组和Azure SQL 数据库异地副本 (replica))。 此值只能在辅助副本 (replica)上readable有效观察
65536- 查询存储达到选项设置max_storage_size_mb的大小限制。 有关此选项的详细信息,请参阅 ALTER DATABA标准版 标准版T 选项
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、、5101530、、601440分钟。 默认值为 60 分钟。
max_storage_size_mb bigint 查询存储的最大磁盘大小(MB)。 默认值为 100 MB,最高为 SQL Server 2017(14.x),SQL Server 2019(15.x)及更高版本中为 1 GB。

对于 SQL 数据库 高级版 版本,默认值为 1 GB,对于 SQL 数据库 基本版,默认值为 10 MB。

使用 ALTER DATABASE <database> SET QUERY_STORE (MAX_STORAGE_SIZE_MB = <size>) 语句进行更改。
stale_query_threshold_days bigint 查询信息保存在查询存储中的天数。 默认值是 300设置为禁用保留策略。
对于 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 2016(13.x)及更高版本的默认配置值。

2 = AUTO - 基于执行计数和资源消耗捕获相关查询。 这是SQL 数据库的默认配置值。

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 数据库)

NONE

CUSTOM
capture_policy_execution_count int 查询捕获模式 CUSTOM 策略选项。 定义在评估期间执行查询的次数。 默认为 30

适用于:SQL Server 2019 (15.x) 及更高版本。
capture_policy_total_compile_cpu_time_ms bigint 查询捕获模式 CUSTOM 策略选项。 定义查询在评估期间使用的总编译 CPU 时间。 默认值为 1000。

适用于:SQL Server 2019 (15.x) 及更高版本。
capture_policy_total_execution_cpu_time_ms bigint 查询捕获模式 CUSTOM 策略选项。 定义查询在评估期间使用的总执行 CPU 时间。 默认为 100

适用于:SQL Server 2019 (15.x) 及更高版本。
capture_policy_stale_threshold_hours int 查询捕获模式 CUSTOM 策略选项。 定义评估间隔时段以确定是否应捕获查询。 默认值为 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(4000) 当前尚未使用。

权限

需要 VIEW DATABASE STATE 权限。

注解

actual_state_desc启用辅助副本 (replica)查询存储时,其READ_CAPTURE_SECONDARY值为预期状态。 有关详细信息,请参阅次要副本的查询存储