スクリプト タスクでのデータ ソースへの接続
接続マネージャは、パッケージ内に構成されたデータ ソースへのアクセスを提供します。詳細については、「Integration Services の接続」を参照してください。
スクリプト タスクは、Dts オブジェクトの Connections プロパティを介して、これらの接続マネージャにアクセスできます。Connections コレクション内の各接続マネージャは、基になるデータ ソースへの接続方法に関する情報を格納しています。
接続マネージャの AcquireConnection メソッドを呼び出すと、その接続マネージャがまだ接続されていない場合、データ ソースに接続され、ユーザーのスクリプト タスク コードで使用する適切な接続または接続情報が返されます。
注意 |
---|
AcquireConnection を呼び出す前に、接続マネージャによって返される接続の種類を知っておく必要があります。スクリプト タスクでは Option Strict が有効なので、Object 型として返される接続は、使用する前に適切な種類の接続にキャストする必要があります。 |
Connections プロパティによって返される Connections コレクションの Contains メソッドを使用すると、既存の接続をコードで使用する前に検索できます。
重要 |
---|
スクリプト タスクのマネージ コードでは、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
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;
}
}
|