我有一个问题是几周前在Windows更新后开始的,而且我找不到关于interwebs上的问题的任何信息。我在最新的Windows 10计算机上安装了SQL Server 2016 Express实例,其中包含一个具有FILESTREAM文件组的数据库和一个全文搜索目录。据我所知,数据库已附加并正常运行,Windows事件日志中没有任何内容。但是,自该更新以来,SQL Server不断使用CPU和磁盘持续来对数据库进行搅拌。
我将数据库存储在机械硬盘上,并且在我关闭SQL实例之前,CPU使用率一直在30%左右。重新启动它只会暂时有所帮助,因为搅拌很快就会重新开始。请记住,这是在网络外的机器上(除了互联网连接)。起初我以为我得了病毒,所以我关闭了服务器,并将其从轨道上取下来。我有一个新的SSD,安装了Windows 10,安装了SQL Server 2016,更新了所有内容,拿走了MDF和LDF(以及文件流文件夹),将它们移到了新机器上,附加了数据库。一开始没问题。然后它再次启动,虽然现在CPU使用率要低得多,可能是因为存储速度要快得多。
这似乎与Windows Defender以某种方式有关,因为我可以开始扫描并查看sqlservr.exe处理到同一数据库的数量。
SSMS活动监视器始终显示没有可以解释活动的进程或任何数据库方式。请记住,这是一个新安装的计算机上的独立数据库,除了我之外没有客户端连接。
我已经查看了可能导致这种情况发生的更新,但我没有看到任何明显的内容,现在我不知道该怎么办。我看到的唯一解决方案是降级到SQL Server 2008 SP3,我知道之前的事实工作正常。我非常感谢任何帮助。
答案 0 :(得分:1)
SQL Server错误日志中频繁出现的“启动数据库'Abacus'”消息表明数据库已设置为AUTO_CLOSE
,并且经常访问数据库。这种不断打开和关闭的数据库会导致很大的开销,并且可能是您看到的高资源利用率的原因。
简单的治疗方法是关闭自动关闭:
ALTER DATABASE Abacus
SET AUTO_CLOSE OFF;
通常最好保持AUTO_CLOSE
数据库设置,以避免不必要的开销。例外情况是托管数百或数千个数据库的SQL实例,其中大多数数据库未被主动使用。