共用方式為


OLE DB 來源

OLE DB 來源會使用資料庫數據表、檢視或 SQL 命令,從各種不同的 OLE DB 相容關係資料庫擷取數據。 例如,OLE DB 來源可以從 Microsoft Office Access 或 SQL Server 資料庫中的數據表擷取數據。

OLE DB 來源提供四種不同的資料存取模式來擷取資料:

  • 資料表或檢視。

  • 變數中指定的數據表或檢視表。

  • SQL 語句的結果。 查詢可以是參數化查詢。

  • 儲存在變數中的 SQL 語句結果。

備註

當您使用 SQL 語句叫用從臨時表傳回結果的預存程式時,請使用 WITH RESULT SETS 選項來定義結果集的元數據。

如果您使用參數化查詢,您可以將變數對應至參數,以指定 SQL 語句中個別參數的值。

此來源會使用 OLE DB 連接管理員來連線至數據源,而連接管理員會指定要使用的 OLE DB 提供者。 如需詳細資訊,請參閱 OLE DB 連接管理員

Integration Services 專案也提供數據源物件,您可以從中建立 OLE DB 連接管理員,讓數據源和數據源檢視可供 OLE DB 來源使用。

根據 OLE DB 提供者,某些限制適用於 OLE DB 來源:

  • 適用於 Oracle 的 Microsoft OLE DB 提供者不支援 Oracle 資料類型 BLOB、CLOB、NCLOB、BFILE 或 UROWID,且 OLE DB 來源無法從包含具有這些資料類型之數據行的數據表中擷取數據。

  • IBM OLE DB DB2 提供者和 Microsoft OLE DB DB2 提供者不支援使用呼叫預存程序的 SQL 命令。 使用這類命令時,OLE DB 來源無法建立數據行元數據,因此,數據流中 OLE DB 來源後面的數據流元件沒有可用的數據行數據,而且數據流的執行會失敗。

OLE DB 來源有一個一般輸出和一個錯誤輸出。

使用參數化 SQL 語句

OLE DB 來源可以使用 SQL 語句來擷取數據。 語句可以是 SELECT 或 EXEC 語句。

OLE DB 來源會使用 OLE DB 連接管理員來連線到從中擷取數據的數據源。 根據 OLE DB 連接管理員所使用的提供者,以及連接管理員所連線的關係資料庫管理系統 (RDBMS),不同的規則會套用至參數的命名和清單。 如果參數名稱是從 RDBMS 傳回,您可以使用參數名稱將參數清單中的參數對應至 SQL 語句中的參數;否則,參數會依參數清單中的序數位置,對應至 SQL 語句中的 參數。 支援的參數名稱類型會因提供者而異。 例如,某些提供者會要求您使用變數或數據行名稱,有些提供者會要求您使用符號名稱,例如0或 Param0。 您應確認查看提供者特定的文件,以取得要在 SQL 語句中使用的參數名稱的資訊。

當您使用 OLE DB 連接管理員時,無法使用參數化子查詢,因為 OLE DB 來源無法透過 OLE DB 提供者衍生參數資訊。 不過,您可以使用表示式將參數值串連至查詢字串,並設定來源的 SqlCommand 屬性。在 SSIS 設計工具中,您可以使用 [OLE DB 來源編輯器 ] 對話框來設定 OLE DB 來源,並將參數對應至 [ 設定查詢參數 ] 對話框中的變數。

使用序數位置來指定參數

如果未傳回任何參數名稱,[設定查詢參數] 對話方塊中 [參數] 清單中的參數順序將決定它們在運行時對應到哪個參數標記。 清單中的第一個參數會對應至第一個 ? 在 SQL 語句中,從第二個開始,到倒數第二個 ?,以此類推。

下列 SQL 語句會從 AdventureWorks2012 資料庫中的 Product 數據表中選取數據列。 Mappings 清單中的第一個參數會對應至 Color 欄中的第一個參數,第二個參數則對應至 Size 欄。

SELECT * FROM Production.Product WHERE Color = ? AND Size = ?

參數名稱沒有任何作用。 例如,如果參數的名稱與套用的數據行相同,但未放入 參數清單中的正確 序數位置,則運行時間發生的參數對應將會使用 參數的序數位置,而不是參數名稱。

EXEC 命令通常需要您使用在程式中提供參數值做為參數名稱的變數名稱。

使用名稱指定參數

如果從 RDBMS 傳回實際參數名稱,SELECT 和 EXEC 語句所使用的參數會依名稱對應。 參數名稱必須符合 SELECT 語句或 EXEC 語句所預期的預存程式名稱。

下列 SQL 語句會執行 AdventureWorks2012 資料庫中提供的 uspGetWhereUsedProductID 預存程式。

EXEC uspGetWhereUsedProductID ?, ?

預存程式預期變數 @StartProductID@CheckDate會提供參數值。 參數出現在 [ 對應 ] 列表中的順序無關緊要。 唯一的需求是參數名稱符合預存程式中的變數名稱,包括 @ 符號。

將參數對應至變數

參數會對應至在運行時間提供參數值的變數。 變數通常是使用者定義的變數,不過您也可以使用 Integration Services 所提供的系統變數。 如果您使用使用者定義的變數,請確定您已將資料類型設定為與對應參數所參考之數據行資料類型相容的類型。 如需詳細資訊,請參閱 Integration Services (SSIS) 變數

針對 OLE DB 來源進行疑難解答

您可以記錄 OLE DB 來源對外部資料提供者所做的呼叫。 您可以使用這項記錄功能,針對從 OLE DB 來源執行的外部數據源載入資料進行疑難解答。 若要記錄 OLE DB 來源對外部資料提供者所做的呼叫,請啟用封裝記錄,然後在封裝層級選取 [診斷 ] 事件。 如需詳細資訊,請參閱 封裝執行疑難解答工具

設定 OLE DB 來源

您可以透過程式設計方式或透過 SSIS 設計工具來設定屬性。

如需了解可以在 OLE DB 來源編輯器 對話框中設定之屬性的資訊,請按以下其中一個主題:

[進階編輯器] 對話方塊會反映能以程式設計的方式設定之屬性。 如需有關可以在 [進階編輯器] 對話方塊中或以程式設計方式設定之屬性的詳細資訊,請按下列其中一個主題:

在 social.technet.microsoft.com 上的 Wiki 文章,SSIS 與 Oracle 連接器

另請參閱

OLE DB 目的地
Integration Services (SSIS) 變數
數據流