我们的一个客户在Windows 2008 R2 Standard计算机上运行SQL Server 2005。每隔一段时间,服务器就会因以下错误而失败:
SQL Server失败,错误代码为0xc0000000,以生成一个线程来处理新的登录或连接。检查SQL Server错误日志和Windows事件日志,以获取有关可能的相关问题的信息。 [客户:
<local machine>
]
错误以大约每秒一次的速度发生, CLIENT:的值是唯一发生变化的(有时,而不是<local machine>
它显示的是IP机器或属于客户端的其他机器的IP),并且在重新启动SQL Server之前,不能与它建立连接。重启后,它运行正常。
问题每月发生一次或两次。上一次出现没有窗口日志;我已经增加了应用程序日志的最大大小。
在再次检查日志时,我注意到AppDomain由于内存压力而被标记为卸载,卸载并以大约每30分钟一次的速率重新创建。在所述问题的最后两次出现期间,AppDomain分别上升到250和264。这可能是一个相关问题吗?
答案 0 :(得分:0)
此错误可能是由于max worker threads
设置太低造成的。您可以将其设置为:
EXEC sp_configure 'max worker threads',0
GO
RECONFIGURE WITH OVERRIDE
GO
提高限额。
由于打开了太多连接,完全有可能出现错误,换句话说,错误是症状而不是原因。您应该检查您的应用程序是否正确关闭连接。
您可以使用sp_who
检查SQL Server中的所有打开的连接:
提供有关Microsoft SQL Server数据库引擎实例中的当前用户,会话和进程的信息。可以过滤信息以仅返回非空闲,属于特定用户或属于特定会话的进程。
有关如何检查开放式连接的更多信息,请阅读this thread on SO。