Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2016+FILESTREAM+Windows Defender=恒定的CPU和磁盘使用率_Sql Server_Windows_Performance_Filestream - Fatal编程技术网

Sql server SQL Server 2016+FILESTREAM+Windows Defender=恒定的CPU和磁盘使用率

Sql server SQL Server 2016+FILESTREAM+Windows Defender=恒定的CPU和磁盘使用率,sql-server,windows,performance,filestream,Sql Server,Windows,Performance,Filestream,我有一个问题是在几周前Windows更新后开始的,我在互联网站上找不到关于这个问题的任何信息。我在最新的Windows 10计算机上安装了一个SQL Server 2016 Express实例,其中的数据库包含一个FILESTREAM文件组和一个全文搜索目录。数据库已连接,功能正常。据我所知,Windows事件日志中没有任何错误。然而,自从那次更新以来,SQLServer不断地对数据库进行搅动,不断地使用CPU和磁盘 我将数据库存储在一个机械硬盘上,CPU使用率一直保持在30%左右,直到我关闭S

我有一个问题是在几周前Windows更新后开始的,我在互联网站上找不到关于这个问题的任何信息。我在最新的Windows 10计算机上安装了一个SQL Server 2016 Express实例,其中的数据库包含一个FILESTREAM文件组和一个全文搜索目录。数据库已连接,功能正常。据我所知,Windows事件日志中没有任何错误。然而,自从那次更新以来,SQLServer不断地对数据库进行搅动,不断地使用CPU和磁盘

我将数据库存储在一个机械硬盘上,CPU使用率一直保持在30%左右,直到我关闭SQL实例。重新启动它只是暂时的,因为搅动很快又开始了。请记住,这是在非网络计算机上,而不是在internet连接上。一开始我以为我感染了病毒什么的,所以我关闭了服务器,从轨道上对它进行了核攻击。我得到了一个新的SSD,安装了Windows 10,安装了SQL Server 2016,更新了所有内容,获取了MDF、LDF和filestream文件夹,将它们移到新机器上,连接了数据库。一开始没问题。然后它再次启动,尽管现在CPU使用率要低得多,可能是因为存储速度快得多

这是它在资源监视器中的外观:

这似乎与Windows Defender有关,因为我可以开始扫描并查看同一数据库的sqlservr.exe句柄数量

SQL Server日志看起来像是无穷无尽的页面:

同时,SSMS活动监视器始终没有显示任何进程或任何可以解释活动的数据库信息。请记住,这是一个新安装的机器上的独立数据库,除我之外没有连接任何客户端


我已经看过可能导致这种情况的更新,但我没有看到任何明显的变化,现在我不知道该怎么办。我看到的唯一解决方案是降级到SQLServer2008SP3,因为我知道它以前工作得很好。如果您能在这方面提供帮助,我将不胜感激。

SQL Server错误日志中的频繁启动数据库“Abacus”消息表明该数据库已设置为自动关闭,并且频繁访问该数据库。这种不断打开和关闭数据库的做法会导致巨大的开销,这可能是您看到的高资源利用率的原因

简单的解决方法是关闭自动关闭:

ALTER DATABASE Abacus
SET AUTO_CLOSE OFF;

通常最好保持“自动关闭数据库”设置处于关闭状态,以避免不必要的开销。异常是一个SQL实例,该实例承载数百或数千个数据库,其中大多数数据库未被有效使用。

只需在Windows Defender exceptions中添加数据库文件夹路径即可。我这样做了,实际上添加了整个实例数据根,并且没有停止。我还禁用了SQL Server CEIP服务,删除了一些计算列,将公式设置为NULL,检查权限等。。。正如我们所说的,它在磁盘上以2MB/s的速度运行…我现在已经禁用了所有其他SQL服务VSS Writer、全文搜索守护程序启动器、代理、浏览器…并且它仍然在毫无原因地运行。SQL Server 2016中是否没有其他人看到此行为?请尝试将Abacus数据库的“自动关闭数据库”选项设置为“关闭”。值得注意的是,数据库根本没有被访问,与filestream相关的某些内容导致SQL Server重复打开和关闭数据库。我在同一个实例上有其他数据库,但没有filestream,它们的行为正常。@在Monkey中,任何接触文件表目录共享的Win32进程都会隐式打开数据库。