Соединение с экземпляром SQL Server

Первым шагом программирования в приложении SQL Server управляющих объектов (SMO) является создание экземпляра Server объекта и установка его соединения с экземпляром Microsoft SQL Server.

Создать экземпляр Server объекта и установить соединение с экземпляром SQL Server можно тремя способами. Первый способ — использовать переменную объекта ServerConnection для задания информации о соединении. Второй способ — задать информацию о соединении в явном виде, присвоив соответствующие значения свойствам объекта Server. Третий — передать имя экземпляра SQL Server в конструкторе Server объектов.

Использование объекта ServerConnection

Преимущество использования переменной объекта ServerConnection в том, что заданную информацию о соединении можно применять многократно. Объявите переменную объекта Server. Затем объявите ServerConnection объект и задайте свойства со сведениями о подключении, такими как имя экземпляра SQL Server и режим проверки подлинности. Затем передайте переменную объекта ServerConnection в качестве параметра конструктору объекта Server. Не рекомендуется использование одного соединения несколькими серверными объектами одновременно. Чтобы получить копию настроек существующего соединения, вызовите метод Copy.

Настройка свойств серверного объекта в явном виде

Другая возможность — объявить переменную объекта Server и вызвать конструктор по умолчанию. Как и есть, Server объект пытается подключиться к экземпляру по умолчанию SQL Server со всеми параметрами подключения по умолчанию.

Передача имени экземпляра SQL Server в конструктор объекта Server

Объявите Server переменную объекта и передайте имя экземпляра SQL Server в качестве строкового параметра в конструкторе. Объект Server устанавливает соединение с экземпляром SQL Server с параметрами подключения по умолчанию.

Объединение подключений в пул

Вызов метода Connect объекта ServerConnection обычно не требуется. SMO автоматически установит соединение, когда это потребуется, и освободит его, передав в пул соединений, после завершения операций. При вызове метода Connect соединение не передается в пул. Для освобождения соединения и его передачи в пул нужен явный вызов метода Disconnect. Кроме этого, можно запросить соединение не из пула, установив свойство NonPooledConnection объекта ServerConnection.

Многопоточные приложения

Для многопоточных приложений в каждом потоке должен использоваться отдельный объект ServerConnection.

Соединение с экземпляром SQL Server для RMO

Объекты RMO используют несколько отличный от SMO подход для соединения с сервером репликации.

Для программных объектов RMO требуется, чтобы соединение с экземпляром SQL Server осуществлялось с помощью ServerConnection объекта, реализуемого пространством Microsoft.SqlServer.Management.Common имен. Это соединение с сервером производится независимо от программного объекта RMO. Затем оно передается объекту RMO либо во время создания экземпляра, либо присвоением его свойству ConnectionContext объекта. Это позволяет создать экземпляр объекта программирования RMO независимо от объекта соединения и разделить задачи их управления. Один объект соединения можно использовать с несколькими объектами программирования RMO. Для соединений с сервером репликации действуют следующие правила.

  • Все свойства соединения определяются для конкретного объекта ServerConnection.

  • Каждое соединение с экземпляром SQL Server должно иметь собственный ServerConnection объект.

  • Все данные проверки подлинности, необходимые для установления соединения и входа на сервер, передаются в объекте ServerConnection.

  • По умолчанию соединения устанавливаются с использованием проверки подлинности Windows. Чтобы использовать проверку подлинности SQL Server, LoginSecure необходимо задать значение False, а LoginPassword для параметра — допустимое SQL Server входа и пароль. Учетные данные безопасности нужно всегда защищать от возможного несанкционированного доступа и по возможности вводить только во время выполнения.

  • До передачи соединения любому объекту программирования RMO следует вызвать метод Connect.

Примеры

Чтобы использовать какой-либо из представленных примеров кода, нужно выбрать среду, шаблон и язык программирования, с помощью которых будет создаваться приложение. Дополнительные сведения см. в разделах «Как создать проект Visual Basic SMO в Visual Studio .NET» или «Как создать проект Visual C# SMO в Visual Studio .NET» электронной документации по SQL Server.

Соединение с локальным экземпляром SQL Server с использованием проверки подлинности Windows на языке Visual Basic

Подключение к локальному экземпляру SQL Server не требует большого объема кода. Вместо этого для метода проверки подлинности и сервера используются настройки по умолчанию. Первая операция, требующая получения данных, вызовет создание соединения.

Этот пример представляет собой код Visual Basic .NET, который подключается к локальному экземпляру SQL Server с помощью проверки подлинности Windows.

Соединение с локальным экземпляром SQL Server с использованием проверки подлинности Windows на языке Visual C#

Подключение к локальному экземпляру SQL Server не требует большого объема кода. Вместо этого для метода проверки подлинности и сервера используются настройки по умолчанию. Первая операция, требующая получения данных, вызовет создание соединения.

Этот пример представляет собой код Visual C# .NET, который подключается к локальному экземпляру SQL Server с помощью проверки подлинности Windows.

{   
//Connect to the local, default instance of SQL Server.   
Server srv;   
srv = new Server();   
//The connection is established when a property is requested.   
Console.WriteLine(srv.Information.Version);   
}   
//The connection is automatically disconnected when the Server variable goes out of scope.  

Соединение с удаленным экземпляром SQL Server с использованием проверки подлинности Windows на языке Visual Basic

При подключении к экземпляру SQL Server с помощью проверки подлинности Windows не нужно указывать тип проверки подлинности. По умолчанию используется проверка подлинности Windows.

Этот пример представляет собой код Visual Basic .NET, который подключается к удаленному экземпляру SQL Server с помощью проверки подлинности Windows. Строковая переменная strServer содержит имя удаленного экземпляра.

Соединение с удаленным экземпляром SQL Server с использованием проверки подлинности Windows на языке Visual C#

При подключении к экземпляру SQL Server с помощью проверки подлинности Windows не нужно указывать тип проверки подлинности. По умолчанию используется проверка подлинности Windows.

Этот пример представляет собой код Visual C# .NET, который подключается к удаленному экземпляру SQL Server с помощью проверки подлинности Windows. Строковая переменная strServer содержит имя удаленного экземпляра.

{   
//Connect to a remote instance of SQL Server.   
Server srv;   
//The strServer string variable contains the name of a remote instance of SQL Server.   
srv = new Server(strServer);   
//The actual connection is made when a property is retrieved.   
Console.WriteLine(srv.Information.Version);   
}   
//The connection is automatically disconnected when the Server variable goes out of scope.  

Соединение с экземпляром SQL Server с использованием проверки подлинности SQL Server на языке Visual Basic

При подключении к экземпляру SQL Server с помощью проверки подлинности SQL Server необходимо указать тип проверки подлинности. В данном примере демонстрируется альтернативный метод объявления переменной объекта ServerConnection, позволяющий повторно использовать информацию соединения.

Примером является код Visual Basic .NET, демонстрирующий, как подключиться к удаленному репозиторию, а vPassword содержит вход и пароль.

' compile with:   
' /r:Microsoft.SqlServer.Smo.dll  
' /r:Microsoft.SqlServer.ConnectionInfo.dll  
' /r:Microsoft.SqlServer.Management.Sdk.Sfc.dll   
  
Imports Microsoft.SqlServer.Management.Smo  
Imports Microsoft.SqlServer.Management.Common  
  
Public Class A  
   Public Shared Sub Main()  
      Dim sqlServerLogin As [String] = "user_id"  
      Dim password As [String] = "pwd"  
      Dim instanceName As [String] = "instance_name"  
      Dim remoteSvrName As [String] = "remote_server_name"  
  
      ' Connecting to an instance of SQL Server using SQL Server Authentication  
      Dim srv1 As New Server()   ' connects to default instance  
      srv1.ConnectionContext.LoginSecure = False   ' set to true for Windows Authentication  
      srv1.ConnectionContext.Login = sqlServerLogin  
      srv1.ConnectionContext.Password = password  
      Console.WriteLine(srv1.Information.Version)   ' connection is established  
  
      ' Connecting to a named instance of SQL Server with SQL Server Authentication using ServerConnection  
      Dim srvConn As New ServerConnection()  
      srvConn.ServerInstance = ".\" & instanceName   ' connects to named instance  
      srvConn.LoginSecure = False   ' set to true for Windows Authentication  
      srvConn.Login = sqlServerLogin  
      srvConn.Password = password  
      Dim srv2 As New Server(srvConn)  
      Console.WriteLine(srv2.Information.Version)   ' connection is established  
  
      ' For remote connection, remote server name / ServerInstance needs to be specified  
      Dim srvConn2 As New ServerConnection(remoteSvrName)  
      srvConn2.LoginSecure = False  
      srvConn2.Login = sqlServerLogin  
      srvConn2.Password = password  
      Dim srv3 As New Server(srvConn2)  
      Console.WriteLine(srv3.Information.Version)   ' connection is established  
   End Sub  
End Class  

Соединение с экземпляром SQL Server с использованием проверки подлинности SQL Server на языке Visual C#

При подключении к экземпляру SQL Server с помощью проверки подлинности SQL Server необходимо указать тип проверки подлинности. В данном примере демонстрируется альтернативный метод объявления переменной объекта ServerConnection, позволяющий повторно использовать информацию соединения.

Примером является код Visual C# .NET, демонстрирующий, как подключиться к удаленному репозиторию, а vPassword содержит имя входа и пароль.

// compile with:   
// /r:Microsoft.SqlServer.Smo.dll  
// /r:Microsoft.SqlServer.ConnectionInfo.dll  
// /r:Microsoft.SqlServer.Management.Sdk.Sfc.dll   
  
using System;  
using Microsoft.SqlServer.Management.Smo;  
using Microsoft.SqlServer.Management.Common;  
  
public class A {  
   public static void Main() {   
      String sqlServerLogin = "user_id";  
      String password = "pwd";  
      String instanceName = "instance_name";  
      String remoteSvrName = "remote_server_name";  
  
      // Connecting to an instance of SQL Server using SQL Server Authentication  
      Server srv1 = new Server();   // connects to default instance  
      srv1.ConnectionContext.LoginSecure = false;   // set to true for Windows Authentication  
      srv1.ConnectionContext.Login = sqlServerLogin;  
      srv1.ConnectionContext.Password = password;  
      Console.WriteLine(srv1.Information.Version);   // connection is established  
  
      // Connecting to a named instance of SQL Server with SQL Server Authentication using ServerConnection  
      ServerConnection srvConn = new ServerConnection();  
      srvConn.ServerInstance = @".\" + instanceName;   // connects to named instance  
      srvConn.LoginSecure = false;   // set to true for Windows Authentication  
      srvConn.Login = sqlServerLogin;  
      srvConn.Password = password;  
      Server srv2 = new Server(srvConn);  
      Console.WriteLine(srv2.Information.Version);   // connection is established  
  
      // For remote connection, remote server name / ServerInstance needs to be specified  
      ServerConnection srvConn2 = new ServerConnection(remoteSvrName);  
      srvConn2.LoginSecure = false;  
      srvConn2.Login = sqlServerLogin;  
      srvConn2.Password = password;  
      Server srv3 = new Server(srvConn2);  
      Console.WriteLine(srv3.Information.Version);   // connection is established  
   }  
}  

См. также:

Server
ServerConnection