O repositório de consultas em nosso banco de dados SQL Server 2016 Standard (SP2 CU6) entrou em ERROR
estado e agora estamos tentando recuperá-lo online. Todos os artigos que vi sobre solução de problemas de QS (por exemplo , este e até mesmo os próprios documentos da Microsoft ) sugerem fazer o seguinte:
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)
Mas o procedimento sp_query_store_consistency_check
não parece existir de forma alguma em nossa instância. O que estamos perdendo?
Como os outros DMVs, funções etc. relacionados ao Query Store,
sp_query_store_consistency_check
está no esquema "sys", não no esquema dbo. Imagino que seja apenas um erro de digitação no blog de Tracy. Ainda assim, o comando deve funcionar mesmo ao fazer referência ao esquema dbo.Você também precisa chamar o procedimento do banco de dados do usuário no qual o armazenamento de consultas está ativado. Tente isto:
Tony mencionou nos comentários que não conseguiu encontrar a definição do procedimento armazenado em nenhum lugar. Isso é típico de procedimentos armazenados estendidos. A execução
EXEC sp_helptext 'sys.sp_query_store_consistency_check';
nele, mesmo a partir de uma conexão DAC, retorna isso:Você pode ver isso mencionado em
sys.all_objects
:Resultados:
Erro meu, acabei de perceber que você está no SQL Server 2016. O procedimento acima foi introduzido no SQL Server 2017.
A única maneira que conheço de recuperar o Query Store em um bom estado em 2016 é limpar todos os dados: