我已收到一个数据库备份文件。
恢复后,我在这个数据库中运行了脚本,它向我显示了查询的行数:
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;
但这不会返回与我在生产数据库上运行时看到的相同的输出。
sys.dm_exec_query_stats 值是存储在服务器级别还是数据库级别?我的意思是还原后数据没有保留吗?
这是一个内存结构。它不会在重新启动 SQL Server 或备份/恢复后继续存在。
但是,查询存储数据会保留在数据库内。因此,请考虑为重要数据库启用查询存储。也就是说,查询存储数据在重新启动和备份/恢复后仍会保留。