Использование VB.Net и SQL Server 2008 R2:
Недавно у меня была база данных, в которой sp_who2 отражает соединение ".Net SqlClient Data Provider" все еще активен, хотя приложение .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 usng sp_who2 после запуска приложения (посмотрите на полужирный .NetSQLClientDataProvider)
Статус SPID Имя хоста BlkBy DBName Команда CPUTime DiskIO LastBatch Имя программы SPID REQUESTID
57 спит на ВАШЕМ ПК. master КОМАНДА ОЖИДАНИЯ 0 0 07/19 12:38:48 * .Net SqlClient Data Provider * 57 0
Только когда я действительно закрою ПРИЛОЖЕНИЕ, соединение .Net SQLClient Data будет удалено из представления. Меня беспокоит следующее: 1. Какое влияние эти процессы оказывают на мою базу данных с точки зрения ресурсов, и почему соединение отражается и спит. 2. Когда я пытаюсь отсоединить базу данных, я вижу, что 1 соединение активно, но код был закрыт и удален.