次の方法で共有


スクリプト タスクでのデータ ソースへの接続

適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム

接続マネージャーは、パッケージ内に構成されたデータ ソースへのアクセスを提供します。 詳細については、「Integration Services (SSIS) の接続」を参照してください。

スクリプト タスクは、Dts オブジェクトの Connections プロパティを介して、これらの接続マネージャーにアクセスできます。 Connections コレクション内の各接続マネージャーは、基になるデータ ソースへの接続方法に関する情報を格納しています。

接続マネージャーの AcquireConnection メソッドを呼び出すと、その接続マネージャーがまだ接続されていない場合、データ ソースに接続され、ユーザーのスクリプト タスク コードで使用する適切な接続または接続情報が返されます。

注意

AcquireConnection を呼び出す前に、接続マネージャーによって返される接続の種類を知っておく必要があります。 スクリプト タスクでは Option Strict が有効なので、Object 型として返される接続は、使用する前に適切な種類の接続にキャストする必要があります。

Contains プロパティによって返される Connections コレクションの Connections メソッドを使用すると、既存の接続をコードで使用する前に検索できます。

重要

スクリプト タスクのマネージド コードでは、OLE DB 接続マネージャーや Excel 接続マネージャーなど、アンマネージド オブジェクトを返す接続マネージャーの AcquireConnection メソッドを呼び出すことはできません。 ただし、これらの接続マネージャーの ConnectionString プロパティを読み取り、System.Data.OleDb 名前空間の OledbConnection と共に接続文字列を使用することにより、コード内でデータ ソースに直接接続することができます。

アンマネージ オブジェクトを返す接続マネージャーの AcquireConnection メソッドを呼び出す必要がある場合は、ADO.NET 接続マネージャーを使用してください。 OLE DB プロバイダーを使用するように ADO.NET 接続マネージャーを構成すると、接続には .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 =
            DirectCast(Dts.Connections("Test ADO.NET Connection").AcquireConnection(Dts.Transaction),
                SqlClient.SqlConnection)
        MsgBox(myADONETConnection.ConnectionString,
            MsgBoxStyle.Information, "ADO.NET Connection")

        Dim myFlatFileConnection As String =
            DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction),
                String)
        MsgBox(myFlatFileConnection, MsgBoxStyle.Information, "Flat File Connection")

        Dts.TaskResult = ScriptResults.Success

    End Sub
		public void Main()
		{
            SqlConnection myADONETConnection = 
                Dts.Connections["Test ADO.NET Connection"].AcquireConnection(Dts.Transaction)
                as SqlConnection;
            MessageBox.Show(myADONETConnection.ConnectionString, "ADO.NET Connection");

            string myFlatFileConnection = 
                Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) 
                as string;
            MessageBox.Show(myFlatFileConnection, "Flat File Connection");

            Dts.TaskResult = (int)ScriptResults.Success;
		}

関連項目

Integration Services (SSIS) の接続
接続マネージャーを作成する