스크립트 태스크에서 데이터 원본에 연결
연결 관리자를 사용하면 패키지에 구성된 데이터 원본에 액세스할 수 있습니다. 자세한 내용은 Integration Services(SSIS) 연결을 참조하십시오.
스크립트 태스크에서는 Dts 개체의 Connections 속성을 통해 이러한 연결 관리자에 액세스합니다. Connections 컬렉션의 각 연결 관리자는 기본 데이터 원본에 연결하는 방법에 대한 정보를 저장합니다.
연결 관리자의 AcquireConnection 메서드를 호출하면 해당 연결 관리자는 데이터 원본이 아직 연결되어 있지 않은 경우 데이터 원본에 연결하고 개발자가 스크립트 태스크 코드에서 사용할 수 있는 적절한 연결 및 연결 정보를 반환합니다.
[!참고]
AcquireConnection을 호출하려면 먼저 연결 관리자에서 반환하는 연결 유형을 알고 있어야 합니다. 스크립트 태스크에는 Option Strict가 설정되어 있으므로 Object 형식으로 반환된 연결을 사용하려면 먼저 이 연결을 적절한 연결 유형으로 캐스팅해야 합니다.
코드에서 연결을 사용하기 전에 Connections 속성에서 반환된 Connections 컬렉션의 Contains 메서드를 사용하여 기존 연결을 찾을 수 있습니다.
중요 |
---|
스크립트 태스크의 관리 코드에서는 OLE DB 연결 관리자 및 Excel 연결 관리자와 같이 관리되지 않는 개체를 반환하는 연결 관리자의 AcquireConnection 메서드를 호출할 수 없습니다. 그러나 이러한 연결 관리자의 ConnectionString 속성을 읽고 System.Data.OleDb 네임스페이스의 OledbConnection을 포함하는 연결 문자열을 사용하여 코드에서 직접 데이터 원본에 연결할 수 있습니다. 관리되지 않는 개체를 반환하는 연결 관리자의 AcquireConnection 메서드를 호출해야 하는 경우에는 ADO.NET 연결 관리자를 사용합니다. ADO.NET 연결 관리자에서 OLE DB 공급자를 사용하도록 구성할 경우 이 연결 관리자는 .NET Framework Data Provider for OLE DB를 사용하여 연결합니다. 이 경우 AcquireConnection 메서드는 관리되지 않는 개체 대신 System.Data.OleDb.OleDbConnection을 반환합니다. ADO.NET 연결 관리자를 Excel 데이터 원본에 사용할 수 있도록 구성하려면 연결 관리자 대화 상자의 모두 페이지에서 Microsoft OLE DB Provider for Jet를 선택하고 Excel 파일을 지정한 다음 확장 속성 값으로 Excel 8.0(Excel 97 이상의 경우)을 입력합니다. |
연결 예
다음 예에서는 스크립트 태스크 내에서 연결 관리자에 액세스하는 방법을 보여 줍니다. 이 예제에서는 Test ADO.NET Connection이라는 ADO.NET 연결 관리자와 Test Flat File Connection이라는 플랫 파일 연결 관리자를 만들고 구성했다고 가정합니다. ADO.NET 연결 관리자는 데이터 원본에 즉시 연결하는 데 사용할 수 있는 SqlConnection 개체를 반환합니다. 반면에 플랫 파일 연결 관리자는 경로와 파일 이름이 들어 있는 문자열만 반환합니다. 플랫 파일을 열어 작업하려면 System.IO 네임스페이스의 메서드를 사용해야 합니다.
Public Sub Main()
Dim myADONETConnection As SqlClient.SqlConnection
myADONETConnection = _
DirectCast(Dts.Connections("Test ADO.NET Connection").AcquireConnection(Dts.Transaction), _
SqlClient.SqlConnection)
MsgBox(myADONETConnection.ConnectionString, _
MsgBoxStyle.Information, "ADO.NET Connection")
Dim myFlatFileConnection As String
myFlatFileConnection = _
DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _
String)
MsgBox(myFlatFileConnection, MsgBoxStyle.Information, "Flat File Connection")
Dts.TaskResult = ScriptResults.Success
End Sub
using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
public class ScriptMain
{
public void Main()
{
SqlConnection myADONETConnection = new SqlConnection();
myADONETConnection = (SqlConnection)(Dts.Connections["Test ADO.NET Connection"].AcquireConnection(Dts.Transaction)as SqlConnection);
MessageBox.Show(myADONETConnection.ConnectionString, "ADO.NET Connection");
string myFlatFileConnection;
myFlatFileConnection = (string)(Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
MessageBox.Show(myFlatFileConnection, "Flat File Connection");
Dts.TaskResult = (int)ScriptResults.Success;
}
}
|