如何解决Sql数据库连接不能正常关闭?

如何解决Sql数据库连接不能正常关闭?,第1张

Connection对象在Close后只是断开了和DB的连接,但是连接池内仍然会存在一段时间。

如果调用Dispose方法则释放该对象的资源并从连接池内清除。

所以在有多次使用connection的地方,要显式关闭connection并Dispose。

即使这样,由于机器(webserver和sqlserver)自动收集connection需要一定的时间,可能还会有错误,不过你可以试试看 估计可以解决大部分问题

1、正常关闭

正常关闭数据库所用的选项是normal,数据库在关闭前将检查所有的连接,并且发出命令后不允许再有新的用户连接,在等待所有连接都断开后再关闭数据库,再次启动数据库不需要任何恢复过程。

联入sys用户

sql>shutdown normal

2、紧急关闭

方式用在某些紧急的情况下,比如通知马上停电,此时需要紧急关闭数据库以应付这些情况。这种方式用的选项是immediate,在这种方式下并不等待所有的用户断开连接再关闭,而是由系统断开连接,然后关闭数据库。

sql>shutdown immediate

一旦执行了这条命令,则将当前正在处理的sql语句马上停止,然后将所有未提交的事务回退,并且不等待当前联入数据库的用户断开连接,而是由系统强行将各个联接断开。在下次启动数据库时要执行恢复动作,不过是由系统自动执行的,用户不必去了解它。

3、异常关闭

异常关闭选项是abort,此种方式下系统并不做任何检查和断开用户 *** 作以及回退 *** 作,而是直接将数据库现场撤销,这样现场中的数据库数据当然就无效了,数据库自然也就被关掉了。

sql>shutdown abort

以abort方式关闭数据库时只有一行关闭信息表示关闭了数据库现场。以abort方式关闭的数据库再次启动时必须要进行恢复动作,这些恢复 *** 作同样是系统自动来完成的,需要的时间较长。

1、数据库一般链接后,在程序中是不主动关闭数据库连接的

2、每次使用数据库的时候只用判断当前数据库链接是否已经自动关闭,若是关闭,再Open一次即可

3、在程序内部经常性链接数据库、关闭数据库连接,是会造成程序缓慢的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6737200.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存