我们的 SQL Server 2016 Standard (SP2 CU6) 数据库上的查询存储已进入ERROR
状态,我们现在正尝试使其重新联机。我看到的所有关于 QS 故障排除的文章(例如这篇文章,甚至微软自己的文档)都建议执行以下操作:
ALTER DATABASE [QDS] SET QUERY_STORE = OFF
exec [QDS].dbo.sp_query_store_consistency_check
ALTER DATABASE [QDS] SET QUERY_STORE = ON
ALTER DATABASE [QDS] SET QUERY_STORE (OPERATION_MODE = READ_WRITE)
但在我们的实例中,该过程sp_query_store_consistency_check
似乎不存在任何形式。我们缺少什么?
与其他与查询存储相关的 DMV、函数等一样,
sp_query_store_consistency_check
位于“sys”模式中,而不是 dbo 模式中。我想这只是 Tracy 博客上的一个错字。尽管如此,即使在引用 dbo 模式时,该命令也应该可以工作。您还需要从启用了查询存储的用户数据库中调用该过程。尝试这个:
Tony在评论中提到他在任何地方都找不到存储过程定义。这是典型的扩展存储过程。在它上面运行
EXEC sp_helptext 'sys.sp_query_store_consistency_check';
,即使是从 DAC 连接,也会返回:你可以看到它在
sys.all_objects
虽然提到:结果:
我的错,我才意识到你是在 SQL Server 2016 上。上面的过程是在 SQL Server 2017 中引入的。
我知道在 2016 年让 Query Store 恢复到良好状态的唯一方法是清除所有数据: