我的 SQL Server 2008 安装(已安装 10.0.2531.0 - SP1)出现问题。它用作小型托管环境(约 500 个站点)的数据库服务器。
我收到如下错误:
客户端无法重新使用 SPID 为 62 的会话,该会话已重置为连接池。故障 ID 为 29。此错误可能是由先前的操作失败引起的。检查错误日志中是否存在此错误消息之前失败的操作。
在 Windows 事件日志中,当我运行此命令时:
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:General Statistics'
我发现其中一个计数器看起来有点奇怪:
Logins/sec 429
Connection Reset/sec 163459
Logouts/sec 399
User Connections 30
Logical Connections 33
有什么想法可以检查是什么导致了这个问题吗?
答案1
MSDN 博客文章介绍了如何处理此错误。 它不是很好,但它确实提供了一些关于如何解释错误代码(故障 ID)的指示。
通常情况下,在重新初始化连接时需要执行一些昂贵的工作(例如访问控制和验证)。这会产生潜在的竞争条件。当服务器执行此工作时,客户端可能会超时并关闭连接或执行其他操作,从而产生异常。正如 campo 在他的评论中提到的那样,损坏的输入可能会加剧这种情况。
这不是导致错误的唯一可能原因;会话重新初始化期间导致异常的任何因素都可能导致此错误。错误代码的名称为RedoLoginException
。