2011-03-04 130 views
3

我一直在尋找SSIS的幾個部署策略,並想知道哪一個最容易維護。我一直傾向於使用SQL Server配置來存放連接字符串,然後在從開發服務器導入包以更改連接字符串之後運行proc。不過,我有75個軟件包,這看起來有些乏味。任何人都可以提出一個好的部署策SSIS部署策略

我有一個Dev,Stage和幾臺要部署到的活動服務器。

+0

不能在此可以通過dtutil實現和DTEXEC? – OK999 2017-01-09 18:15:44

回答

2

我們對我的團隊構建的大多數軟件包都使用SQL配置。我們爲解決遷移問題所做的工作是添加第二個基於環境變量的配置,該環境變量告訴包要使用哪個配置數據庫。對於每個人來說,這可能都不是一個好的選擇,但它對我們的設置來說效果很好

詳情:

  • 我們的包總是從代理作業運行。
  • 我們的每一個環境是一個單獨的機器上(我們不使用命名實例除了沙盒。)
  • 我們有我們的配置數據庫的副本,每臺機器的默認SQL實例,並使用相同的分貝名稱和架構在每個環境中。
  • 該程序包查看機器名稱環境變量以確定哪臺機器正在執行程序包。
  • 然後,程序包將在執行機器上查找配置數據庫,以獲取要完成實際工作的連接字符串。

當我們構建一個新的包時,我們必須將SQL配置遷移到每個環境並根據需要進行調整。但是從那時起,只要我們改變軟件包使用哪個連接或哪個服務器正在執行它,我們只需要擔心它們。

這樣做的包總是知道哪個服務器正在執行它,並始終使用與該服務器相關的配置。因此,單個軟件包的持續維護和部署通常很簡單。我們通常不得不擔心移動是軟件包本身以及與更新相關的任何基礎模式更改。

+0

我們也這樣做,並傾向於編寫用於將數據輸入到SSISConfig表中的腳本,以便它們將根據運行腳本的服務器自動更改值。 – HLGEM 2011-03-24 18:45:27

0

我一般發現在包含所有必需的數據庫連接的XML文件中有一個Package Configuration更容易。在將軟件包部署到每個環境時(這可以作爲部署清單安裝的一部分發生),將根據需要進行修改。你的每個包都可以共享相同的配置文件,這使得它的管理非常簡單。

+0

你有沒有找到這個策略的好教程? – William 2011-03-04 14:14:16

+0

這更多的來自個人經驗,但我有一個快速的樣子,發現這篇文章可能有用。 http://vyaskn.tripod.com/sql_server_2005_making_ssis_packages_portable.htm – grapefruitmoon 2011-03-04 14:22:06

0

我們在每臺機器上都有一個指向目錄的環境變量。在那個目錄中我們有一個SSIS配置文件。配置文件有一個條目 - 它配置在我們所有軟件包中找到的連接管理器的連接字符串屬性 - 稱爲SSIS_CONFIG。該連接字符串指向具有該環境的配置表的數據庫。

配置表具有連接管理器的配置以及各種其他配置。連接管理器行的ConfigurationFilter設置爲數據庫名稱,ConfiguredValue具有該數據庫的連接字符串。

每個軟件包都有SSIS_CONFIG連接管理器。所有其他連接管理器都被命名爲它們連接的數據庫的名稱(而不是服務器和數據庫的SSIS默認命名)。

SSIS_CONFIG連接管理器由程序包配置配置,配置類型爲間接XML,配置位置存儲在環境變量中。每個其他連接管理器都使用配置類型SQL Server,連接SSIS_CONFIG和它們連接的數據庫名稱的配置過濾器。

如果一個新軟件包需要連接到一個數據庫,那麼另一個軟件包也不得不這樣做,所以該連接管理器所需的配置已經在配置表中,所以我們在構建包的包裝配置。

每個環境都有環境變量以及它自己的數據庫和配置表版本。配置表中環境之間的唯一區別是ConfiguredValue列中的連接字符串。例如,DEV環境中的連接字符串指向數據庫的DEV版本,並且QA環境條目指向數據庫的QA版本。

在環境之間提升它們時,編輯軟件包會使測試無效。這種方法使我們可以在不觸及它們的情況下升級包該設計也非常靈活,使開發和測試變得更容易。

我們可以使用使用此作爲一個準則在同一臺機器上運行多個實例這種方法: http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/69739/