Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1470673
  • 博文数量: 254
  • 博客积分: 8696
  • 博客等级: 中将
  • 技术积分: 2961
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-03 16:46
文章分类

全部博文(254)

文章存档

2015年(4)

2014年(18)

2013年(16)

2012年(8)

2011年(25)

2010年(2)

2009年(74)

2008年(107)

分类: 数据库开发技术

2008-09-11 19:46:57

客户端可能会突然切断与服务器的连接,因而客户端进程无法告知网络正确关闭连接。这可能由于许多原因而发生,包括客户端的电源故障。Microsoft®   SQL   Server™   2000   并不事先探测客户端连接的状态。而是依赖   Microsoft   Windows   NT®   在某连接需要终止或关闭时通知它。Windows   NT   在   TCP/IP   的   KeepAliveTime   或   NetBios   的   SessionKeepAlive   持续时间内,监视连接并持续向   SQL   Server   报告连接为活动的,该操作将影响命名管道客户端。SQL   Server   继续令客户端拥有的锁保持活动,直到取消这些锁,或   Windows   NT   终止或关闭该连接。  
   
  当客户端在终止时无法释放自己控制的网络连接时发生孤立会话。  
   
  当客户端干净地终止时,Windows   NT   关闭连接并通知   SQL   Server。如果   SQL   Server   正在处理客户端命令,它将在结束该会话时检测已关闭的连接。崩溃的或终止自己的进程(例如从任务管理器)的客户端应用程序立即由   Windows   NT   清除,很少会导致孤立会话。  
   
  当客户端计算机意外断电或在未执行正常关机的情况下关闭时,是出现孤立会话的一个常见起因。孤立会话还会由于挂起的应用程序而发生,此应用程序从未完全终止,从而导致死连接。Windows   NT   不知道该连接已死并继续向   SQL   Server   报告其操作为活动的。而   SQL   Server   则保持会话打开并继续等待来自客户端的命令。  
   
  打开的会话占据一个   SQL   Server   网络连接。连接的最大数目由服务器客户端访问许可证   (CAL)   的数量限制,因此孤立会话可能阻止其它客户端的连接。  
   
  通常,更重要的问题是打开的会话使用服务器资源,并可能拥有打开的游标、临时表或锁。这些锁可能阻塞其它连接执行有用的工作,有时会导致锁的大量"堆积"。在严重的情况下,可能出现   SQL   Server   停止工作的现象。

(出自:)

阅读(1221) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~