Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 错误17886-服务器将断开连接_Sql Server_Sql Server 2008_Windows Server 2008 R2 - Fatal编程技术网

Sql server 错误17886-服务器将断开连接

Sql server 错误17886-服务器将断开连接,sql-server,sql-server-2008,windows-server-2008-r2,Sql Server,Sql Server 2008,Windows Server 2008 R2,我们正在使用sql server 2008 x64 r2在vps服务器上运行一个网站。我们正受到17886错误的轰炸,即: 服务器将断开连接,因为客户端驱动程序 会话处于单用户模式时发送了多个请求。这 客户端发送重置连接请求时出错 当会话中仍有批处理在运行时,或当 会话重置连接时,客户端发送请求。 请联系客户驱动程序供应商 这会导致sql语句返回损坏的结果。我已经尝试了在网上找到的几乎所有建议,包括: 有火星,也没有 有联营和无联营 带async=true,不带 我们只有一个数据库,它绝对是

我们正在使用sql server 2008 x64 r2在vps服务器上运行一个网站。我们正受到
17886
错误的轰炸,即:

服务器将断开连接,因为客户端驱动程序 会话处于单用户模式时发送了多个请求。这 客户端发送重置连接请求时出错 当会话中仍有批处理在运行时,或当 会话重置连接时,客户端发送请求。 请联系客户驱动程序供应商

这会导致sql语句返回损坏的结果。我已经尝试了在网上找到的几乎所有建议,包括:

  • 有火星,也没有
  • 有联营和无联营
  • 带async=true,不带
我们只有一个数据库,它绝对是多用户的

所有设备都是最近安装的,因此都是最新的。它们可能与
高cpu
相关(但并非仅根据我所看到的监视器)。也与搜索引擎的高请求率相关。然而,高cpu/请求不应该导致sql连接重置-最坏情况下,我们应该有高响应时间或iis拒绝发送响应


有什么建议吗?我只是一名开发人员而不是dba—我是否需要dba来解决此问题?

不确定,但您的一些查询可能会导致服务器死锁

在您再次检测到此错误时

  • 打开Management Studio(在服务器上,必要时安装)

  • 打开一个新的查询窗口

  • 运行sp_who2

  • 检查blkby列,该列是阻塞的的缩写。如果该列中有任何数据,则会出现死锁问题(通常情况下,它应该与我附带的屏幕截图类似,完全为空)

如果出现死锁,我们可以继续下一步。但是现在请检查一下


要修复上述错误,需要将“MultipleActiveResultSets=True”添加到连接字符串中


通过

我将创建一个事件日志任务,每当抛出17886时,我都会给您发送电子邮件。然后立即转到数据库并执行sp_who2,获取blkby spid并运行dbcc inputbuffer。希望eventinfo会给你一些更具体的东西

sp_who2

DBCC输入缓冲区(62) 在DI实例化代码中使用“每个请求一个实例”策略,您的问题就会得到解决

很可能您正在使用依赖项注入。在web开发过程中,您必须考虑并发请求的可能性。因此,您必须确保每个请求在DI期间都获得新实例,否则您将陷入并发问题。不要对服务和上下文使用“.SingleInstance”来降低成本


启用MARS可能会减少错误的数量,但遇到的错误将不太清楚。启用MARS从来都不是解决方案,除非您知道自己在做什么,否则不要使用它。

在出现错误时很难捕获服务器。我是否需要在出错的同时捕获这些数据?如果是这样,我不确定下一个机会之窗何时到来。一次有几天没有错误,然后突然有数百个错误。同时还有其他解决方案可供尝试吗?请查看以下目录中的文件:“C:\Program files\Microsoft SQL Server\[YourSQLInstanceName]\MSSQL\Log”,并查看事件日志。尝试查找更多信息,如果您认为找到了有用的内容,请将其添加到问题中我在上面发布的消息(“服务器将断开连接…”)是我在sql错误日志中看到的错误,有数百个主题。您可以从访问网站数据库的位置粘贴一段代码吗?您是为每个查询创建连接还是在多个请求之间共享连接?