我有一个VB.NET Windows应用程序,当我调试它时,它会打开连接。此时我可以看到通过转到SQL Server Management Studio中的活动监视器创建了两个进程。我执行我的查询,然后立即关闭连接。但是,当我这样做时,过程不会消失。
对于我的生活,我无法弄清楚为什么不。这不是问题,除了我在软件中有一个不能让我恢复的恢复选项,因为由于进程仍处于打开状态而正在使用数据库。在退出申请之前,它们不会消失。
答案 0 :(得分:5)
可能这只是因为ADO.Net实际上保持连接打开,以便您以后可以使用它。这称为连接池。打开和关闭连接是一个昂贵的过程,连接池有助于降低此成本。
关于还原问题,您可以执行SQL以关闭数据库上的所有打开的连接。目前无权访问SQLMS,但是如果选中“关闭现有连接”选项填写删除数据库对话框,然后将对话框输出到SQL,您将看到它。
答案 1 :(得分:0)
此数据库用作桌面应用的本地数据存储?
Sql Server - 甚至是Express Edition - 是一个服务器级数据库引擎。它旨在使用在多个不同计算机甚至应用程序之间共享的数据库。我不希望服务器进程因为单个连接关闭而消失,我很惊讶它甚至需要首先启动 - 使用Sql Server Express这些进程通常已经在运行。
如果此数据库是桌面应用程序的本地数据存储,那么您确实应该使用进程内引擎,如Sql Server Compact,Sqlite甚至Access。您可能想要升级到这样的应用程序的Sql Server Express的例外情况是,您正在编写的应用程序是 原因,因为它运行的计算机将存在。