应用程序关闭时,SQL Server会话保持打开状态
本文关键字:状态 会话 Server SQL 应用程序 | 更新日期: 2023-09-27 18:22:26
每当我关闭应用程序时,我都会处理我的DbContext
对象,以确保没有连接处于活动状态。
当我在SQLServerManagementStudio中运行sp_who
时,但由于某种原因,status = 'sleeping'
的会话仍然存在。
因此,除非我终止会话,否则我无法执行某些命令(例如DROP DATABASE
),这需要我找到ID并手动终止它。
有没有一种方法可以在我的应用程序关闭时立即终止此会话?
Entity框架使用底层SQL Server ADO.NET提供程序来池化数据库连接,因为每次创建和刷新数据库连接都是一项昂贵的操作。
您可以在Application_End
事件处理程序上使用SqlConnection.ClearPool方法调用来刷新连接池。
注意:我不建议禁用或刷新生产代码的连接池。另一种开发方法是使用Pooling=false
选项通过连接字符串进行修改以禁用池。