我的问题是几周前在 Windows 更新后开始的,我在互联网上找不到有关该问题的任何信息。我在最新的 Windows 10 计算机上安装了一个 SQL Server 2016 Express 实例,该实例具有一个包含 FILESTREAM 文件组的数据库和一个全文搜索目录。据我所知,数据库已附加并正常运行,Windows 事件日志中没有任何内容。但是,自从那次更新后,SQL Server 不断地在数据库上运行,不断地使用 CPU 和磁盘。
我将数据库存储在机械硬盘上,CPU 使用率一直保持在 30% 左右,直到我关闭 SQL 实例。重新启动它只会暂时有帮助,因为搅拌很快就会再次开始。请记住,这是在离线机器上(除了互联网连接)。一开始我以为我感染了病毒什么的,所以我关闭了服务器,然后将它从轨道上炸掉。我得到了一个新的 SSD,安装了 Windows 10,安装了 SQL Server 2016,更新了所有内容,获取了 MDF 和 LDF(和文件流文件夹),将它们移到新机器上,附加了数据库。一开始没有问题。然后它再次启动,尽管现在 CPU 使用率要低得多,可能是因为存储速度要快得多。
这似乎与 Windows Defender 以某种方式有关,因为我可以开始扫描并查看同一数据库的 sqlservr.exe 句柄数量。
并且一直以来,SSMS 活动监视器都没有显示任何流程或任何可以解释该活动的数据库明智信息。请记住,这是新安装的机器上的一个独立数据库,除了我之外没有连接任何客户端。
我已经查看了可能导致这种情况的更新,但我看不到任何明显的东西,现在我不知道该怎么做。我看到的唯一解决方案是降级到 SQL Server 2008 SP3,我知道它以前运行良好。我将不胜感激对此的任何帮助。
SQL Server 错误日志中频繁出现的“正在启动数据库 'Abacus'”消息表明该数据库已设置为AUTO_CLOSE
并且该数据库被频繁访问。数据库的这种不断打开和关闭会导致大量开销,并且可能是您看到的资源利用率高的原因。
简单的解决方法是关闭自动关闭:
ALTER DATABASE Abacus
SET AUTO_CLOSE OFF;
通常最好AUTO_CLOSE
关闭数据库设置以避免不必要的开销。一个例外是托管成百上千个数据库的 SQL 实例,其中大多数都没有被积极使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句