Буду признателен за несколько советов о лучшем методе управления несколькими соединениями SQL .net (VB)
Мое приложение подключается к четырем экземплярам SQL Server (2000, 2005, 2008, 2008R2) для восстановления баз данных, изменения данных и создания резервных копий.
В дополнение к управлению базами данных приложение также имеет свою собственную БД (в экземпляре 2008 года) для хранения различных данных.
Я использую два метода для подключения к экземплярам: SMO (для резервного копирования, восстановления и получения информации о базах данных, размере и т. Д.) И SqlClient для запроса каждой базы данных для многих задач, таких как обновление полей и выполнение сценариев sql.I у меня есть несколько форм для выполнения различных задач, поэтому есть много мест, где я открываю \ закрываю соединения.
Будет ли лучше поддерживать постоянное глобальное соединение с каждым экземпляром из приложения? (Всего два, один для SMO, а другой для SqlClient) или открывать закрывать соединение для каждой задачи, которую я выполняю?) Я не использую LINK, поскольку мне нужно, чтобы задачи были максимально быстрыми.
Строка подключения будет отличаться для каждого подключения (в зависимости от того, к какому экземпляру и базе данных подключено), как бы я справился с этим? Строка в файле конфигурации для базы данных приложений будет иметь смысл, поскольку она будет статической, но работа с базами данных будет варьироваться в зависимости от каждого соединения.
В настоящее время я создаю соединение для каждого экземпляра в основной форме:
Dim 2000Connection = New SqlConnection("Data Source=" & SQLServerName & _
"\SQL2000;Initial Catalog=Master;User ID=sa;Password=P@ssw0rd;Pooling=True;")
Dim 2005Connection = New SqlConnection("Data Source=" & SQLServerName & _
"\SQL2005;Initial Catalog=Master;User ID=sa;Password=P@ssw0rd;Pooling=True;")
Dim 2008Connection = New SqlConnection("Data Source=" & SQLServerName & _
"\SQL2008;Initial Catalog=Master;User ID=sa;Password=P@ssw0rd;Pooling=True;")
и т.д.
Затем, используя «USE [» & DatabaseName & »] ...», перейдите в нужную базу данных и сохраните ее, создав новую строку подключения.
Я использую этот класс для подключения:
Public Class ClassDatabaseConnection
Private Shared connection As SqlClient.SqlConnection
Public Shared ReadOnly Property Instance As SqlClient.SqlConnection
Get
If connection Is Nothing Then
connection = New SqlConnection("Static Connection String;")
End If
Return connection
End Get
End Property
Public Shared Customconnection As SqlClient.SqlConnection
Public Shared Property CustomInstance(Optional ByVal Server As String = "", Optional ByVal Database As String = "Master") As SqlClient.SqlConnection
Get
If Customconnection Is Nothing Then
Customconnection = New SqlConnection("Data Source=" & Server & ";User ID=sa;Password=P@ssw0rd;")
End If
Return Customconnection
End Get
Set(ByVal value As SqlClient.SqlConnection)
End Set
End Property
End Class