Recebi um arquivo de backup do banco de dados.
Após a restauração, executei o script neste banco de dados e ele me mostra a contagem de linhas em termos de consulta:
SELECT qs.execution_count,
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2
ELSE qs.statement_end_offset end -
qs.statement_start_offset
)/2
) AS query_text,
qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid,
qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rows
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.text like '%SELECT%'
ORDER BY qs.execution_count DESC;
No entanto, isso não retorna a mesma saída que vejo ao executá-lo no banco de dados de produção.
Os valores sys.dm_exec_query_stats são armazenados na alavanca do servidor ou no nível do banco de dados? Quero dizer, os dados não são retidos após a restauração?
Esta é uma estrutura na memória. Ele não sobrevive à reinicialização do Sql Server ou ao backup/restauração.
No entanto, os dados do Query Store são mantidos dentro do banco de dados. Portanto, considere ativar o Query Store para seus bancos de dados importantes. Ou seja, os dados do armazenamento de consultas sobrevivem tanto à reinicialização quanto ao backup/restauração.