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