使用 VB.Net 和 SQL Server 2008 R2:
我最近有一个数据库,它使用 sp_who2 反映了一个连接“.Net SqlClient 数据提供程序”仍然处于活动状态,即使 .Net 应用程序已关闭并处理了所有连接。
代码如下所示:
导入 System.Data.SqlClient
Private Sub TestSQLConnection()
Dim strConnection As String
strConnection = "Server=MyServer;UID=User;PWD=Password;Database=MyDatabase"
Dim conn As New SqlConnection(strConnection)
conn.Open()
conn.Close()
conn.Dispose()
GC.Collect()
GC.WaitForPendingFinalizers()
End Sub
当我在运行应用程序后查看 SQL Server 使用 sp_who2 时(查看粗体的 .NetSQLClientDataProvider)
SPID 状态 Login HostName BlkBy DBName Command CPUTime DiskIO LastBatch ProgramName SPID REQUESTID
57 睡着你的电脑。主等待命令 0 0 07/19 12:38:48 * .Net SqlClient 数据提供者* 57 0
只有当我真正关闭应用程序时,.Net SQLClient 数据连接才会从视图中删除。我关心的是以下几点: 1. 从资源的角度来看,这些进程对我的数据库有什么影响,为什么连接会被反射和休眠。2. 当我尝试分离数据库时,我发现 1 个连接处于活动状态,但代码已关闭并处理。