連接至指令碼工作中的資料來源
適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime
連接管理員會提供已在封裝中設定的資料來源存取權。 如需詳細資訊,請參閱 Integration Services (SSIS) 連線。
指令碼工作可以透過 Dts 物件的 Connections 屬性來存取這些連線管理員。 在 Connections 集合中的每個連接管理員儲存有關如何連接至基礎資料來源的資訊。
當您呼叫連接管理員的 AcquireConnection 方法時,如果連接管理員尚未連接,連接管理員會連接至資料來源,並傳回適當的連接或是連接資訊,供您在指令碼工作程式碼中使用。
注意
您必須知道連線管理員傳回的連接類型,才能呼叫 AcquireConnection。 因為指令碼工作已啟用 Option Strict,所以您必須將以 Object 類型傳回的連接,轉換為適當的連接類型,才能使用它。
您可以在程式碼中使用連接之前,先透過 Contains 屬性傳回的 Connections 集合之 Connections 方法,尋找現有的連接。
重要
在指令碼工作的 Managed 程式碼中,無法呼叫傳回 Unmanaged 物件之連線管理員的 AcquireConnection 方法,例如 OLE DB 連線管理員與 Excel 連線管理員。 不過,您可以讀取這些連線管理員的 ConnectionString 屬性,而且可以透過使用來自 System.Data.OleDb 命名空間的 OledbConnection 之連接字串,直接在程式碼中連接至資料來源。
若您必須呼叫會傳回未受控物件之連線管理員的 AcquireConnection 方法,請使用 ADO.NET 連線管理員。 當您設定 ADO.NET 連接管理員以使用 OLE DB 提供者時,它會透過使用 .NET Framework Data Provider for OLE DB 來連接。 在這種情況下,AcquireConnection 方法會傳回 System.Data.OleDb.OleDbConnection,而不是 Unmanaged 物件。 若要將 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;
}