建立、部署和偵錯自訂物件

在針對 Integration Services 的自訂物件撰寫程式碼之後,您必須建立組件、部署它以及將它整合到 SSIS 設計師,使其可供封裝使用,並進行測試和偵錯。

針對 Integration Services 建立、部署和偵錯自訂物件的步驟。

您已經撰寫物件的自訂功能。現在您必須測試它,並使其可供使用者使用。其步驟非常類似於可以為 Integration Services 建立之所有類型的自訂物件。

以下是您在建立、部署及偵錯它時所要遵循的步驟:

  1. 簽署要使用強式名稱產生的組件。

  2. 建立組件。

  3. 將組件移動或是複製到適當的 Integration Services 資料夾,以部署組件。

  4. 在全域組件快取 (GAC) 中安裝組件。

  5. 當物件是工作或是資料流程元件時,將物件加入至工具箱。

  6. 必要時為部署進行疑難排解。

  7. 測試和偵錯您的程式碼。

簽署組件

當要共用某個組件時,必須在全域組件快取中安裝它。將組件加入至全域組件快取之後,類似 Business Intelligence Development Studio 的應用程式就可以使用該組件。全域組件快取的要求是組件必須以強式名稱簽署,以確保組件是全域唯一的。強式名稱的組件具有包含組件名稱、文化特性、公開金鑰和版本號碼的完整名稱。執行階段會使用這項資訊找出該組件,並和其他同名的組件區別。

若要使用強式名稱簽署組件,您必須先擁有或是建立公開/私密金鑰組。這個公開和私密密碼編譯金鑰組將在建立時期用來建立強式名稱的組件。

如需有關強式名稱以及簽署組件時必須遵循之步驟的詳細資訊,請參閱在 .NET Framework SDK 文件中的下列主題:

  • 強式名稱的組件

  • 建立金鑰組

  • 使用強式名稱簽署組件

您可以在建立時期使用 Visual Studio 中的強式名稱輕鬆地簽署組件。在 [專案屬性] 對話方塊中,選取 [簽署] 索引標籤。選取 [簽署組件] 的選項,然後提供金鑰 (.snk) 檔案的路徑。

建立組件

在簽署專案之後,您必須在 BI Development Studio 中使用 [建立] 功能表上可用的命令,以建立或是重建專案或方案。您的方案可能包含自訂使用者介面的個別專案,它也必須以強式名稱簽署,而且可以同時建立。

執行後續兩個步驟 (部署組件以及在全域組件快取中安裝它) 的最方便的方法,就是在 Visual Studio 中將這些步驟撰寫成建置後事件。建置事件可從 Visual Basic 專案上 [專案屬性] 頁面的 [編譯] 頁面取得,以及從 C# 專案的 [建置事件] 頁面取得。類似 gacutil.exe 的命令提示字元公用程式需要完整路徑。包含空格的路徑以及展開至包含空格之路徑的巨集 (例如 $(TargetPath)) 都需要用引號括起來。

以下是自訂記錄提供者的建置後事件命令列範例:

"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -u $(TargetName)
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\100\DTS\LogProviders "

部署組件

SSIS 設計師會列舉在安裝 SQL Server Integration Services 時所建立之一系列資料夾中所找到的檔案,以尋找封裝中可供使用的自訂物件。在使用預設 SQL Server 安裝設定時,這組資料夾是位於 C:\Program Files\Microsoft SQL Server\100\DTS。不過,如果您為自訂物件建立安裝程式,應該檢查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath 登錄機碼值以確認此資料夾的位置。

您可以透過下列兩種方法將組件放在資料夾中:

  • 在建立編譯的組件之後,將它移動或複製到適當的資料夾 (為了方便起見,您可以在建置後事件中包括複製命令)。

  • 直接在適當的資料夾中建置組件。

C:\Program Files\Microsoft SQL Server\100\DTS 之下的下列部署資料夾是用於各種類型的自訂物件:

自訂物件

部署資料夾

工作

工作

連接管理員

連接

記錄提供者

LogProviders

資料流程元件

PipelineComponents

[!附註]

將組件複製到這些資料夾中,以支援可用工作、連接管理員等項目的列舉。因此,您不必將只包含自訂物件之自訂使用者介面的組件部署到這些資料夾。

在全域組件快取中安裝組件

若要將工作組件安裝到全域組件快取 (GAC),請使用命令列工具 gacutil.exe,或是將組件拖曳到 %system%\assembly 目錄。為了方便起見,您也可以在建置後事件中包括 gacutil.exe 的呼叫。

下列命令使用 gacutil.exe 將名為 MyTask.dll 的元件安裝到 GAC。

gacutil /iF MyTask.dll

您必須在安裝新版本的自訂物件之後,關閉和重新開啟 SSIS 設計師。如果您已在全域組件快取中安裝舊版的自訂物件,必須在安裝新版本之前先移除它們。若要解除安裝組件,請執行 gacutil.exe,並使用 /u 選項指定組件名稱。

如需有關全域組件快取的詳細資訊,請參閱 .NET Framework 工具中的全域組件快取工具 (Gactutil.exe)。

將工作或是資料流程元件加入至工具箱

在您已部署自訂物件,並將它安裝在全域組件快取中之後,就可以在 Business Intelligence Development Studio 中使用它,就像 SQL Server Integration Services 隨附的任何物件一樣。然而,它必須明確地加入至 [工具箱]

將自訂元件加入至工具箱

  1. 以滑鼠右鍵按一下工具箱,然後按一下 [選擇項目]

  2. [選擇工具箱項目] 對話方塊中,針對工作按一下 [SSIS 控制流程項目] 索引標籤,或是針對資料流程元件按一下 [SSIS 資料流程項目] 索引標籤。

  3. 按一下元件旁邊的核取方塊,然後按一下 [確定]

[!附註]

如果該元件未顯示在清單中,您可以按一下 [瀏覽] 來自行尋找該元件。但是在此情況下,它可能未正確安裝。

部署的疑難排解

如果您的自訂物件出現在 [工具箱] 或是可用物件的清單中,但是您無法將它加入至封裝中,請嘗試下列動作:

  1. 查詢全域組件快取,以取得元件的多個版本。如果在全域組件快取中有多個版本的元件,設計師可能無法載入您的元件。從全域組件快取中刪除此組件的所有執行個體,然後重新加入該組件。

  2. 請確定部署資料夾中只有該組件的單一執行個體存在。

  3. 重設工具箱。

  4. 將 Visual Studio 附加到 devenv.exe,並設定中斷點以逐步完成初始化程式碼,從而確保沒有例外狀況發生。

測試和偵錯您的程式碼

偵錯自訂物件之執行階段方法最簡單的方法,就是在建立自訂物件和執行使用該元件的封裝之後,從 Visual Studio 啟動 dtexec.exe

如果您想要偵錯元件的設計階段方法,例如 Validate 方法,請開啟在第二個 Visual Studio 執行個體中使用該元件的封裝,並附加至其 devenv.exe 處理序。

如果您希望當封裝在 SSIS 設計師中開啟和執行時,偵錯元件的執行階段方法,您必須在執行封裝時強制暫停,如此便可附加至 DtsDebugHost.exe 處理序。

附加至 dtexec.exe 來偵錯物件的執行階段方法

  1. 在偵錯組態中簽署和建立專案,然後加以部署,並將它安裝在全域組件快取中,如本主題所述。

  2. [專案屬性][偵錯] 索引標籤中,選取 [啟動外部程式] 做為 [起始動作],並尋找預設安裝在 C:\Program Files\Microsoft SQL Server\100\DTS\Binn 中的 dtexec.exe

  3. [命令列選項] 文字方塊的 [起始選項] 之下,輸入執行可使用您的元件之封裝所需的命令列引數。通常命令列引數是由 /F[ILE] 參數以及緊接在後面之 .dtsx 檔案的路徑與檔案名稱所組成。如需詳細資訊,請參閱<dtexec 公用程式 (SSIS 工具)>。

  4. 在原始程式碼中設定中斷點,設定之處必須適合元件的執行階段方法。

  5. 執行您的專案。

將自訂物件的設計階段方法附加到 Business Intelligence Development Studio 以進行偵錯。

  1. 在偵錯組態中簽署和建立專案,然後加以部署,並將它安裝在全域組件快取中,如本主題所述。

  2. 在原始程式碼中設定中斷點,設定之處必須適合自訂物件的設計階段方法。

  3. 開啟第二個 Visual Studio 執行個體,並載入 Integration Services 專案,該專案包含使用自訂物件的封裝。

  4. 從第一個 Visual Studio 執行個體,附加至第二個 devenv.exe 執行個體,其中會從第一個執行個體的 [偵錯] 功能表選取 [附加至處理序] 來載入封裝。

  5. 從第二個 Visual Studio 執行個體執行封裝。

將自訂物件的執行階段方法附加到 Business Intelligence Development Studio 來進行偵錯。

  1. 在您已完成上一個程序中所列的步驟之後,請強制暫停封裝的執行,好讓您可以附加至 DtsDebugHost.exe。若要強制這個暫停動作,您可以將中斷點加入至 OnPreExecute 事件,或是將指令碼工作加入至專案,並輸入可顯示強制回應訊息方塊的指令碼。

  2. 執行封裝。當暫停發生時,切換到 Visual Studio 的執行個體,其中您的程式碼專案是開啟的狀態,然後從 [偵錯] 功能表選取 [附加至處理序]。請務必附加至 [類型] 資料行中列為 Managed, x86DtsDebugHost.exe 執行個體,而不是附加至只列為 x86 的執行個體。

  3. 返回暫停的封裝並繼續略過中斷點,或是按一下 [確定] 以解除指令碼工作所引發的訊息方塊,然後繼續封裝執行和偵錯。

Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 或 TechNet 上的 Integration Services 頁面:

若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。