重复的SQL错误17189

时间:2016-02-22 11:09:50

标签: sql-server-2005 appdomain

问题:

我们的一个客户在Windows 2008 R2 Standard计算机上运行SQL Server 2005。每隔一段时间,服务器就会因以下错误而失败:

  

SQL Server失败,错误代码为0xc0000000,以生成一个线程来处理新的登录或连接。检查SQL Server错误日志和Windows事件日志,以获取有关可能的相关问题的信息。 [客户:<local machine>]

错误以大约每秒一次的速度发生, CLIENT:的值是唯一发生变化的(有时,而不是<local machine>它显示的是IP机器或属于客户端的其他机器的IP),并且在重新启动SQL Server之前,不能与它建立连接。重启后,它运行正常。

问题每月发生一次或两次。上一次出现没有窗口日志;我已经增加了应用程序日志的最大大小。

机器配置:

  • 操作系统:Windows 2008 R2标准版SP1(x64)
  • SQL:Microsoft SQL Server 2005 - 9.00.4035.00(Intel X86)2008年11月24日13:01:59版权所有(c)1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.1(Build 7601:Service Pack 1)
  • CPU:Intel Xeon E5430 @ 2.66GHz
  • RAM:32 GB
  • 分页文件:驱动器E(系统管理)上为32 GB,其他所有驱动器上均为无(包括驱动器C)

更多信息:

  • 服务器有2个主动使用的数据库:
  • 一个数据库用于复制(1个出版物,约有450个订阅者,其中大多数每天同步,通常每天多次同步)。 Web应用程序也使用相同的数据库,该应用程序有大约150个订阅者在白天主动使用它。
  • 这两个数据库都有频繁的作业运行,主要是从一个数据库导入和转移到另一个数据库。

更新

在再次检查日志时,我注意到AppDomain由于内存压力而被标记为卸载,卸载并以大约每30分钟一次的速率重新创建。在所述问题的最后两次出现期间,AppDomain分别上升到250和264。这可能是一个相关问题吗?

1 个答案:

答案 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