共用方式為


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

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

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

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

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

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

  2. 建立組件。

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

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

    此物件會自動加入工具箱。

  5. 必要時,可以為部署進行疑難排解。

  6. 測試及偵錯您的程式碼。

簽署組件

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

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

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

  • 強式名稱的組件

  • 建立金鑰組

  • 使用強式名稱簽署組件

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

建立組件

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

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

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

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\110\DTS\LogProviders "

部署組件

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

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

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

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

位於 C:\Program Files\Microsoft SQL Server\110\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)。

部署的疑難排解

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

  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\110\DTS\Binn 中的 dtexec.exe

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

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

  5. 執行您的專案。

若要將自訂物件的設計階段方法附加到 SQL Server Data Tools 以進行偵錯

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

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

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

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

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

若要將自訂物件的執行階段方法附加到 SQL Server Data Tools 以進行偵錯

  1. 完成前一個程序所列的步驟之後,請強制暫停封裝的執行,以便能附加到 DtsDebugHost.exe。 如果要強制執行此暫停動作,可以將中斷點加入 OnPreExecute 事件,或將指令碼工作加入專案,並輸入可顯示強制回應訊息方塊的指令碼。

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

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

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

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


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

請參閱

工作

疑難排解封裝開發的工具

概念

開發 Integration Services 的自訂物件

保存自訂物件