SQL Server 인스턴스에 연결
적용 대상: SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
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 인스턴스와의 연결을 설정합니다.
연결 풀링
개체의 Connect 메서드를 ServerConnection 호출할 필요가 없습니다. 작업이 완료되면 SMO는 필요할 때 자동으로 연결을 설정하고 연결 풀로 반환합니다. 메서드를 Connect 호출하는 경우 연결이 풀로 해제되지 않습니다. 이를 위해서는 메서드를 Disconnect 명시적으로 사용해야 합니다. 또한 개체의 ServerConnection 속성을 조정하여 NonPooledConnection 풀링되지 않은 연결을 가져올 수 있습니다.
다중 스레드 애플리케이션
다중 스레드 애플리케이션의 경우 각 스레드에서 별도의 ServerConnection 개체를 사용해야 합니다.
RMO용 SQL Server 인스턴스에 연결
RMO(복제 관리 개체)는 SMO와 약간 다른 방법을 사용하여 복제 서버에 연결합니다.
RMO 프로그래밍 개체를 사용하려면 Microsoft.SqlServer.Management.Common 네임스페이스에서 구현한 개체를 사용하여 ServerConnection SQL Server 인스턴스에 연결해야 합니다. 서버에 대한 이 연결은 RMO 프로그래밍 개체와 독립적으로 이루어집니다. 그런 다음 인스턴스를 만드는 동안 또는 개체의 속성에 할당하여 RMO 개체에 ConnectionContext 전달됩니다. 이러한 방식으로 RMO 프로그래밍 개체와 연결 개체 인스턴스를 별도로 만들고 관리할 수 있으며 단일 연결 개체를 여러 RMO 프로그래밍 개체와 함께 다시 사용할 수 있습니다. 복제 서버에 대한 연결에는 다음 규칙이 적용됩니다.
연결에 대한 모든 속성은 지정된 ServerConnection 개체에 대해 정의됩니다.
SQL Server 인스턴스에 대한 각 연결에는 고유한 ServerConnection 개체가 있어야 합니다.
연결하고 서버에 성공적으로 로그인하기 위한 모든 인증 정보가 개체에 ServerConnection 제공됩니다.
연결 설정 시 기본적으로 Microsoft Windows 인증이 사용됩니다. SQL Server 인증 LoginSecure 을 사용하려면 False로 설정해야 하며 Login Password 유효한 SQL Server 로그인 및 암호로 설정해야 합니다. 보안 자격 증명은 항상 안전하게 저장 및 처리되어야 하며 가능한 한 런타임에 제공해야 합니다.
Connect RMO 프로그래밍 개체에 연결을 전달하기 전에 메서드를 호출해야 합니다.
예제
제공된 코드 예제를 사용하려면 프로그래밍 환경, 프로그래밍 템플릿 및 애플리케이션을 만들 프로그래밍 언어를 선택해야 합니다. 자세한 내용은 Visual Studio .NET에서 Visual C# SMO 프로젝트 만들기를 참조하세요.
Visual Basic에서 Windows 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결
SQL Server의 로컬 인스턴스에 연결해도 많은 코드가 필요하지 않습니다. 대신 인증 방법 및 서버에 대한 기본 설정을 사용합니다. 데이터를 검색해야 하는 첫 번째 작업으로 인해 연결이 만들어집니다.
이 예제는 Windows 인증을 사용하여 SQL Server의 로컬 인스턴스에 연결하는 Visual Basic .NET 코드입니다.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
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 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 에는 원격 인스턴스의 이름이 포함됩니다.
'Connect to a remote instance of SQL Server.
Dim srv As Server
'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 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
}
}