다음을 통해 공유


SQL Server 인스턴스에 연결

SMO(SQL Server Management Objects) 애플리케이션의 첫 번째 프로그래밍 단계는 개체의 Server 인스턴스를 만들고 Microsoft SQL Server 인스턴스에 대한 연결을 설정하는 것입니다.

개체의 인스턴스를 Server 만들고 세 가지 방법으로 SQL Server 인스턴스에 대한 연결을 설정할 수 있습니다. 첫 번째는 개체 변수를 ServerConnection 사용하여 연결 정보를 제공하는 것입니다. 두 번째는 개체 속성을 명시적으로 설정 Server 하여 연결 정보를 제공하는 것입니다. 세 번째는 개체 생성자에서 Server SQL Server 인스턴스의 이름을 전달하는 것입니다.

ServerConnection 개체 사용

개체 변수를 ServerConnection 사용할 경우의 장점은 연결 정보를 다시 사용할 수 있다는 것입니다. 개체 변수를 Server 선언합니다. 그런 다음, 개체를 ServerConnection 선언하고 SQL Server 인스턴스의 이름 및 인증 모드와 같은 연결 정보를 사용하여 속성을 설정합니다. 그런 다음 개체 변수를 ServerConnection 매개 변수 Server 로 개체 생성자에 전달합니다. 서로 다른 서버 개체 간에 연결을 동시에 공유하지 않는 것이 좋습니다. 메서드를 Copy 사용하여 기존 연결 설정의 복사본을 가져옵니다.

서버 개체 속성을 명시적으로 설정

또는 개체 변수를 Server 선언하고 기본 생성자를 호출할 수 있습니다. 그대로 개체는 Server 모든 기본 연결 설정을 사용하여 SQL Server의 기본 인스턴스에 연결하려고 합니다.

서버 개체 생성자에 SQL Server 인스턴스 이름 제공

개체 변수를 Server 선언하고 SQL Server 인스턴스 이름을 생성자에서 문자열 매개 변수로 전달합니다. 개체는 Server 기본 연결 설정을 사용하여 SQL Server 인스턴스와의 연결을 설정합니다.

커넥션 풀링

일반적으로 개체의 ServerConnection 메서드를 Connect 호출할 필요는 없습니다. SMO는 필요한 경우 자동으로 연결을 설정하고 작업을 완료한 후 연결 풀에 대한 연결을 해제합니다. 메서드가 Connect 호출되면 연결이 풀로 해제되지 않습니다. 풀에 대한 Disconnect 연결을 해제하려면 메서드에 대한 명시적 호출이 필요합니다. 또한 개체의 ServerConnection 속성을 설정 NonPooledConnection 하여 풀되지 않은 연결을 요청할 수 있습니다.

다중 스레드 애플리케이션

다중 스레드 애플리케이션의 경우 각 스레드에서 별도의 ServerConnection 개체를 사용해야 합니다.

RMO용 SQL Server 인스턴스에 연결

RMO(복제 관리 개체)는 SMO와 약간 다른 방법을 사용하여 복제 서버에 연결합니다.

RMO 프로그래밍 개체를 사용하려면 네임스페이스에서 구현된 개체를 사용하여 ServerConnection SQL Server 인스턴스에 Microsoft.SqlServer.Management.Common 연결해야 합니다. 서버에 대한 이 연결은 RMO 프로그래밍 개체와 독립적으로 이루어집니다. 그런 다음 인스턴스를 만드는 동안 또는 개체의 속성에 할당하여 RMO 개체에 ConnectionContext 전달됩니다. 이러한 방식으로 RMO 프로그래밍 개체와 연결 개체 인스턴스를 별도로 만들고 관리할 수 있으며 단일 연결 개체를 여러 RMO 프로그래밍 개체와 함께 다시 사용할 수 있습니다. 복제 서버에 대한 연결에는 다음 규칙이 적용됩니다.

  • 연결에 대한 모든 속성은 지정된 ServerConnection 개체에 대해 정의됩니다.

  • SQL Server 인스턴스에 대한 각 연결에는 고유한 ServerConnection 개체가 있어야 합니다.

  • 서버에 연결하고 성공적으로 로그인하기 위해 모든 인증 정보를 ServerConnection 개체에 제공합니다.

  • 기본적으로 연결은 Microsoft Windows 인증을 사용하여 이루어집니다. SQL Server 인증 LoginSecure 을 사용하려면 False로 설정해야 하며 LoginPassword 유효한 SQL Server 로그온 및 암호로 설정해야 합니다. 보안 자격 증명은 항상 안전하게 저장 및 처리되어야 하며 가능한 한 런타임에 제공해야 합니다.

  • Connect RMO 프로그래밍 개체에 연결을 전달하기 전에 메서드를 호출해야 합니다.

예시

제공된 코드 예제를 사용하려면 프로그래밍 환경, 프로그래밍 템플릿 및 애플리케이션을 만들 프로그래밍 언어를 선택해야 합니다. 자세한 내용은 SQL Server 온라인 설명서에서 "방법: Visual Studio .NET에서 Visual Basic SMO 프로젝트 만들기" 또는 "방법: Visual Studio .NET에서 Visual C# SMO 프로젝트 만들기"를 참조하세요.

Visual Basic에서 Windows 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결

SQL Server의 로컬 인스턴스에 연결하는 데 많은 코드가 필요하지 않습니다. 대신 인증 방법 및 서버에 대한 기본 설정을 사용합니다. 데이터를 검색해야 하는 첫 번째 작업으로 인해 연결이 만들어집니다.

이 예제는 Windows 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결하는 Visual Basic .NET 코드입니다.

Visual C에서 Windows 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결#

SQL Server의 로컬 인스턴스에 연결하는 데 많은 코드가 필요하지 않습니다. 대신 인증 방법 및 서버에 대한 기본 설정을 사용합니다. 데이터를 검색해야 하는 첫 번째 작업으로 인해 연결이 만들어집니다.

이 예제는 Windows 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결하는 Visual C# .NET 코드입니다.

{   
//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.  

Visual Basic에서 Windows 인증을 사용하여 SQL Server의 원격 인스턴스에 연결

Windows 인증을 사용하여 SQL Server 인스턴스에 연결하는 경우 인증 유형을 지정할 필요가 없습니다. Windows 인증이 기본값입니다.

이 예제는 Windows 인증을 사용하여 SQL Server의 원격 인스턴스에 연결하는 Visual Basic .NET 코드입니다. 문자열 변수 strServer 에는 원격 인스턴스의 이름이 포함됩니다.

Visual C에서 Windows 인증을 사용하여 SQL Server의 원격 인스턴스에 연결#

Windows 인증을 사용하여 SQL Server 인스턴스에 연결하는 경우 인증 유형을 지정할 필요가 없습니다. Windows 인증이 기본값입니다.

이 예제는 Windows 인증을 사용하여 SQL Server의 원격 인스턴스에 연결하는 Visual C# .NET 코드입니다. 문자열 변수 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.  

Visual Basic에서 SQL Server 인증을 사용하여 SQL Server 인스턴스에 연결

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  

Visual C에서 SQL Server 인증을 사용하여 SQL Server 인스턴스에 연결#

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