【问题标题】:Recurring SQL Error 17189重复出现的 SQL 错误 17189
【发布时间】:2016-06-03 18:53:36
【问题描述】:

问题:

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

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

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

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

机器配置:

  • 操作系统:Windows 2008 R2 Standard 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:英特尔至强 E5430 @ 2.66GHz
  • 内存:32 GB
  • 分页文件:32 GB 在驱动器 E(系统管理)上,在所有其他驱动器上没有(包括驱动器 C)

更多信息:

  • 服务器有 2 个正在使用的数据库:
  • 一个数据库用于复制(1 个发布,大约有 450 个订阅者,其中大部分每天同步,通常每天不止一次)。一个网络应用程序也使用相同的数据库,该应用程序有大约 150 名用户在白天积极使用它。
  • 这两个数据库还经常运行作业,主要执行文件导入和从一个数据库到另一个数据库的传输。

更新:

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

【问题讨论】:

  • 如果您的应用程序服务器或客户端(如果它们直接访问数据库)没有正确关闭连接,您会得到这种情况。如果您问我,问题不在于 SQL Server,而在于您的应用程序。
  • 如何检查是否是这种情况?我应该寻找什么?
  • 投票迁移到 dba.stackexchange

标签: sql-server-2005 appdomain


【解决方案1】:

此错误可能是由于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

【讨论】:

  • 通过搜索引擎运行错误会列出很多类似的线程,最好也回顾一下。
  • 很遗憾,max worker threads 选项已经设置为 0。
  • 我在其他线程中搜索错误时运气不佳。我在网上找到的大多数主题都没有解决这个特定的错误,而是谈论一些人似乎与这个错误几乎同时遇到的其他错误。其他线程建议通过注册表修改禁用 SYN 泛洪保护,但此选项不适用于 Windows Server 2008 R2。
  • @ovidiufelixb 您的下一个最佳选择是查看所有软件组件以正确关闭连接。不要只针对 SQL Server,确保您的软件不是罪魁祸首。
  • 再次检查日志时,我注意到由于内存压力,AppDomain 被标记为卸载,并以大约每 30 分钟一次的速度卸载和重新创建。在所述问题的最后 2 次发生中,AppDomain 分别达到 250 和 264。这可能是一个相关问题吗?关于大量连接,是否有任何指导方针? 太多打开的连接是什么意思?这样的问题可能是由死锁引起的(有报道)?有没有一种简单的方法来监控(或记录)连接数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多