[SQL][SSIS]是否可以單獨修改放在 SSISDB 中的單一封裝 ?

[SQL][SSIS]是否可以單獨修改放在 SSISDB 中的單一封裝 ?

這幾天有同事有興趣了解 SQL Server 2012/2014 的 SSIS,因此跟他們分享一下自己使用上的心得,於是有幾個同事提出一些之前沒有想過的問題,於是花了一些時間整理一下一些類似的問題:

 

1. 如果專案已經部署到 SSISDB 內,是否可以單獨修改其中一個 ?

2. 如果專案已經部署到 SSISDB 內,但之前修改的 Source 不見了,是否還可以更改呢 ?

3. 既然專案部署是存放在 SSISDB 內,難道不能直接把某個 Package 的內容直接置換嗎 ?

4. 如果專案內有不需要使用使用的封裝,是否可以透過 SSMS 直接刪除不需要的封裝呢 ?


  

而要解釋這些問題,我們可能要先了解一下 SSIS 的專案部署模式,當我們透過 SSDT 或者是 isdeploymentwizard.exe 去部署時,基本上會將我們 SSIS 的封裝給先打包成為副檔名為 ispac 的檔案,而這個「 ispac 基本上就是一個 zip 的壓縮檔案」。因此如果我把他的副檔名改成 .zip,我們就可以用檔案總管來開啟,可以看到我們會有相關的封裝檔案和專案參數等的檔案都被包在這一個 ispac 的檔案內。

image

 

而當放到 SSISDB 的時候,基本上會去使用一個預存程序「SSISDB [internal].[insert_object_versions]」,配合 SSISDB 目錄建立時候,所指定的加密方式,將整個專案的封裝加密之後給存入到「SSISDB.[internal].[object_versions]」的資料表內,因此整個專案是一次整包一起加密進行處理,因此就沒有辦法單獨修改特定的封裝,必須要整個專案重新打包一次再做更新。

 

那如果專案已經部署之後,但之前維護人員並沒有留下之前修改的原始檔案的話,那麼一種比較簡單的方式,是可以使用 SSDT 直接連上來處理,首先開啟 SSDT,在新增專案的時候選擇「Integration Services」→ 「Integration Services 匯入專案精靈」。而另外也可以先把整個專案會用匯出的方式變成 ispac 檔案,再透過以下類的方式來進行匯入。

image

 

選擇「下一步」

image

 

這裡選擇要匯出專案類型,由於我們可以直接連接 SSISDB,因此我們選擇「Integration Services 目錄」、連接伺服器和 SSISDB 的目錄。而如果沒有辦法直接連接的話,則如同前面所說的先將專案匯出成為 ispac 的檔案,在這裡就要改選擇「專案部署檔案」和指定匯入檔案了。在這個部分要是沒有問題的話,那就選擇「下一步」繼續往下處理了。

image

 

選擇「匯入」

image

 

經過一點時間的處理之後,就可以在 SSDT 中看到原來的專案了。

image

 

匯出完成之後,我們就可以在 SSDT 內進行相關的調整和修改了

image

 

確定修改完成之後,我們在將該專案給部署到 SSISDB 上面

image

 

這裡要選擇原來專案的原始目錄,因此下方會出現一個警告訊息,確定我們是要將原始的專案給覆蓋掉,接著我們就按下「下一步」繼續。

image

 

確定無誤就可以按下「部署」

image

image

 

這樣就可以很順利地重新部署修改後的專案到 SSISDB 上面了,因此重新整理之後就可以看到在 TEST1 下面有我們所新增的 Child3.dtsx

image

 

也可以透過查看專案「版本」的資訊,可以看到專案變化的紀錄,並且可以回到指定的版本。

image

 

希望透過這樣的解釋和範例,可以讓大家知道在對 SSISDB 上的專案,進行專案封裝維護的時候,一些相關的細節可以更為清楚。