应用程序关闭时,SQL Server会话保持打开状态

本文关键字:状态 会话 Server SQL 应用程序 | 更新日期: 2023-09-27 18:22:26

每当我关闭应用程序时,我都会处理我的DbContext对象,以确保没有连接处于活动状态。

当我在SQLServerManagementStudio中运行sp_who时,但由于某种原因,status = 'sleeping'的会话仍然存在。

因此,除非我终止会话,否则我无法执行某些命令(例如DROP DATABASE),这需要我找到ID并手动终止它。

有没有一种方法可以在我的应用程序关闭时立即终止此会话?

应用程序关闭时,SQL Server会话保持打开状态

Entity框架使用底层SQL Server ADO.NET提供程序来池化数据库连接,因为每次创建和刷新数据库连接都是一项昂贵的操作。

您可以在Application_End事件处理程序上使用SqlConnection.ClearPool方法调用来刷新连接池。

注意:我不建议禁用或刷新生产代码的连接池。另一种开发方法是使用Pooling=false选项通过连接字符串进行修改以禁用池。