如何判断SQL数据库是否启用了QUERY_STORE?

Zai*_*zvi 5 sql-server azure azure-sql-database sql-query-store

如何判断Azure SQL数据库是否已打开QUERY_STORE

您可以使用以下命令启用它:

ALTER DATABASE <database_name> SET QUERY_STORE = ON;
Run Code Online (Sandbox Code Playgroud)

我认为检查数据库应该很简单,但我还没有找到诀窍.

仅供参考,我在已启用它的数据库上尝试了此命令,但该命令只返回null:

SELECT DATABASEPROPERTYEX ('<database_name>', 'QUERY_STORE')
Run Code Online (Sandbox Code Playgroud)

Zik*_*ato 8

David 的答案显示当前数据库是否启用了查询存储 - 因此您需要循环遍历它们。

此查询显示是否为所有数据库启用了查询存储(但不显示任何详细信息)。

SELECT 
    d.name,
    d.is_query_store_on
FROM sys.databases AS d 
Run Code Online (Sandbox Code Playgroud)


Dav*_*sey 6

此DMV sys.database_query_store_options应允许您确定是否QUERY_STORE已启用:

SELECT  desired_state_desc ,
        actual_state_desc ,
        readonly_reason, 
        current_storage_size_mb , 
        max_storage_size_mb ,
        max_plans_per_query 
FROM    sys.database_query_store_options ;
Run Code Online (Sandbox Code Playgroud)

Actual_state_Desc说明:

关(0)

- 未启用

READ_ONLY(1)

即使用户指定了读写,查询存储也可以以只读模式运行.例如,如果数据库处于只读模式或查询存储大小超过配额,则可能发生这种情况

READ_WRITE(2)

查询存储已启用,它正在捕获所有查询

错误(3)

极少数情况下,由于内部错误,Query Store可能最终处于ERROR状态.如果内存损坏,可以使用ALTER DATABASE SET QUERY_STORE语句显式请求READ_WRITE模式来恢复Query Store.如果磁盘损坏,必须在明确请求READ_WRITE模式之前清除数据.