移除连接
连接池在闲置了很长一段时间后,或者在检测到与服务器的连接已断开时,会从池中删除连接。
请注意,只有在尝试与服务器通信后才能检测到断开的连接。如果发现不再与服务器连接的连接,则将其标记为无效。
仅当无效连接关闭或回收时,才会从连接池中删除它们。
如果存在与消失的服务器的连接,则即使连接池没有检测到断开的连接并将其标记为无效,也可以从池中提取该连接。
之所以如此,是因为检查连接是否仍然有效的开销将通过引起与服务器的另一次往返来消除拥有池的好处。
发生这种情况时,首次尝试使用该连接将检测到该连接已断开,并引发了异常。
基本上,您所看到的是最后一句话中的该异常。
连接是从连接池中获取的,应用程序不知道物理连接已消失,因此在物理连接仍然存在的前提下尝试使用它。
而你得到了例外。
有几个常见原因。
- 服务器已重新启动,这将关闭现有连接。
在这种情况下,请查看通常在以下位置找到的SQL Server日志:C:\ Program Files \ Microsoft SQL Server \\ MSSQL \ LOG
如果启动时间戳记是最近的,则我们可以怀疑这是导致错误的原因。尝试将此时间戳与异常时间相关联。
2009-04-16 11:32:15.62服务器将SQL Server消息记录在文件'C:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERRORLOG'中。
- 某人或某物杀死了正在使用的SPID。
同样,请查看SQL Server日志。如果您发现一个致命的问题,请尝试将此时间戳与异常时间相关联。
2009-04-16 11:34:09.57 spidXX进程ID XX被主机名xxxxx,主机进程ID XXXX杀死。
- 再次进行故障转移(例如在镜像设置中),请查看SQL Server日志。
如果存在故障转移,请尝试将此时间戳记与异常时间相关联。
2009-04-16 11:35:12.93 spidXX由于故障转移,镜像数据库“”将角色从“ PRINCIPAL”更改为“ MIRROR”。