Sim*_*ter 5 sql-server sql-server-2016 query-store
我一直在 Azure VM 上测试 SQL Server 2016(标准版),但遇到了问题。
在我的 SQL 日志中,我看到 SQLExceptions 和 eventid 1001,这每 15 分钟发生一次。
2016-06-30 15:20:45.83 spid43s ***堆栈转储被发送到 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\LOG\SQLDump2693.txt 2016-06-30 15:20:45.83 spid43s SqlDumpExceptionHandler:进程 43 生成了致命异常 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 正在终止此进程。 2016-06-30 15:20:45.83 spid43s * **************************************** ******************************************** 2016-06-30 15:20:45.83 spid43s * 2016-06-30 15:20:45.83 spid43s * 开始堆栈转储: 2016-06-30 15:20:45.83 spid43s * 06/30/16 15:20:45 spid 43 2016-06-30 15:20:45.83 spid43s * 2016-06-30 15:20:45.83 spid43s * 2016-06-30 15:20:45.83 spid43s * 异常地址 = 00007FF9796D4BB2 模块(sqlmin+0000000000064BB2) 2016-06-30 15:20:45.83 spid43s * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION 2016-06-30 15:20:45.83 spid43s * 发生访问冲突读取地址 0000000000000948
我在我的数据库上启用了查询存储,并将其设置为 15 分钟的数据刷新间隔。
随着查询存储关闭,这些异常似乎停止了。
我在本地安装 SQL Server(开发人员版)时没有遇到此问题。
Azure 和本地计算机上的数据相同,均构建为 13.0.1601.5。
Bob*_*mes 12
这是Standard 和 Express 上查询存储的一个已知错误。
在 Enterprise 和 Developer 以外的版本上,自动数据清理失败。因此,如果不手动清除数据,查询存储使用的空间将随着时间的推移而增长,直到达到配置的限制。如果不缓解,此问题还将填满为错误日志分配的磁盘空间,因为每次尝试执行清理都会产生一个转储文件。清理激活周期取决于工作负载频率,但不超过 15 分钟。
解决方法是关闭清理策略并手动清除查询存储数据。
清除所有查询存储数据
ALTER DATABASE <database name> SET QUERY_STORE CLEAR
Run Code Online (Sandbox Code Playgroud)
选择性清除数据
sp_query_store_reset_exec_stats
sp_query_store_remove_plan
sp_query_store_remove_query
Run Code Online (Sandbox Code Playgroud)
该问题首先在SQL Server 2016 的累积更新 1 中修复:
查询存储自动数据清理在 SQL Server 2016 企业版和开发者版以外的版本上失败(KB 3178297)