2012-06-28 24 views
4

我們有幾個SSIS包(在解決方案中)保存在服務器上的目錄中。這些包通過SQL Server代理作業運行,「文件系統」作爲包源。軟件包不會以任何方式添加到「Integration Services」(您可以通過SSMS中的「連接」按鈕進行連接)。這似乎工作正常。瞭解Integration Services上的存儲包

現在我試圖瞭解Integration Services的實際使用和運作存儲軟件包。這可能是出於一個很好的理由 - 但我還沒有得到它(閱讀幾個SSIS主題沒有幫助)。

如果我打開集成服務和現有的包中存儲的包添加到MSDB文件夾,它被添加到我的SQL Server實例的msdb系統數據庫中。然後我可以從sysssispackagessysssispackagefolders查詢它的一些信息,並直接運行包。

如果我現有的包添加到存儲的包文件系統文件夾,沒有什麼似乎發生,但它也讓我通過右擊並選擇「運行包」來運行它。

我覺得我在這裏錯過了重要的東西。我的問題如下:

  1. 什麼原因沒有使用集成服務來存儲 包除了它們保存爲服務器上的文件?
  2. 當您將包添加到Integration Services的「存儲包」文件夾中的'文件系統'或 'MSDB'文件夾時究竟發生了什麼? 有什麼優勢?

非常感謝任何指針/見解!

+0

我已經回答了我自己的問題,並學會了寫這個答案最 - 這就是爲什麼我把它設置爲接受的答案。感謝所有花時間回答這個問題並幫助我的人! – Josien

回答

2

好吧,所以我誤解了很多關於SSIS包存儲和保存包的信息。這是我學到的東西。首先,'您可以通過SSMS'(連接 - >集成服務...)中的「連接」按鈕連接的東西被稱爲SSIS包存儲

將包添加到Integration Services「存儲包」文件夾中的「文件系統」或「MSDB」文件夾時會發生什麼?有什麼優勢?

文件系統

如果你想在SSIS包存儲區的File System文件夾的工作,你的包保存到默認文件系統目錄(...\Microsoft SQL Server\100\DTS\Packages)或更改根文件夾的文件系統的你想使用的目錄。 (您可以通過在MsDtsSrvr.ini.xml文件中更改<StorePath>..\Packages</StorePath>的默認值change the root,該文件可在...\Microsoft SQL Server\100\DTS\Binn目錄中找到。不要忘記在完成後重新啓動Integration Services服務。)添加包到此目錄,它將出現在SSIS包存儲的文件系統文件夾中。然後,您可以直接從SSIS包存儲或通過SQL Server代理作業(通過在作業步驟屬性中選擇SSIS包存儲作爲包源代碼,然後選擇包)來運行包。

編輯軟件包非常簡單:打開文件系統目錄下的軟件包,編輯並保存,新版本將立即通過SSIS軟件包存儲。

優點:

  • 部署和封裝的故障很容易
  • 包仍然可用,當數據庫引擎下

的SQL Server/MSDB

如果你想依靠msdb要保存包的數據庫,您必須通過SSIS包存儲將每個包導入到msdb中。用鼠標右鍵單擊MSDB文件夾並選擇導入包。這會將程序包保存到msdb數據庫。之後您不需要保存原始的.dtsx包文件。

編輯軟件包是little harder:您必須導出軟件包,對其進行編輯並再次在SSIS包存儲中導入軟件包。或者您可以在BIDS中打開一個新項目,通過右鍵單擊SSIS Packages並選擇從SQL Server添加現有包來編輯它,然後再次在SSIS包存儲中導入該包,從而添加包。

優點:

  • 包的安全性可以通過數據庫安全性msdb數據庫備份
  • 包存儲在一箇中心位置
  • 軟件包將被備份緊緊配置

有什麼理由使用Integration Services來存儲包除了將它們保存爲服務器上的文件?

那麼,爲什麼要將包添加到SSIS包存儲中,而不是像我們一樣通過直接引用來自作業步屬性窗口中的package.dtsx文件來運行它?這取決於:如果你想要你的包在msdb數據庫中,你需要需要包的存儲,因爲沒有其他的方式來維護你的包。如果您使用文件系統,可能是因爲您有單獨的「開發」和「部署」目錄,並且可以通過SSIS包存儲找到所有可以部署的包。在每種情況下,SSIS包商店都爲您的包提供了一個簡單的界面。

感謝João LealDiego爲您的答案!

2
  1. 備份。如果軟件包位於msdb數據庫上,則在備份數據庫時,備份軟件包。他們還可以利用SQL Server的安全性,而不僅僅是在文件系統上進行安裝。

  2. 的好處是,你不必擔心文件的路徑,或者有人會刪除的文件或文件夾移動到另一個位置。該軟件包將始終位於「同一地點」。

+0

感謝您的回答。所以如果一個包被導入到'MSDB'文件夾中,包文件可能被刪除並且包仍然存在?如果一個軟件包被導入到'文件系統'中,那麼它在實際存儲的位置或文件移動的位置都無關緊要,它仍然可以找到? – Josien

+1

是的,一旦將軟件包導入到msdb數據庫,就不再依賴於.dtsx文件,因此您可以將其刪除。 – Diego

5

這裏有幾個優點/數據庫存儲包的缺點VS文件系統存儲包:

文件系統

  • 基於操作系統的文件加密和ACL
  • 更容易直接進入對查看或編輯軟件包
  • 開發人員通常更容易管理(更改軟件包,只需替換文件)

SQL服務器

    由多個個人從數據庫安全性,角色和代理交互
  • 軟件包得到備份與普通的數據庫備份
  • 優勢
  • 更容易獲得處理
  • 爲DBA通常更容易管理(他將控制包裹在變化方面發生的情況等)。

關於你的第二個問題,一個包是SSIS可以讀取和執行的XML文件。在基於文件的部署中,SSIS將文件系統定位到文件系統並執行它,在數據庫部署中,SSIS將該軟件包定位在MSDB表上並執行它。在性能方面沒有任何區別。

+1

這說明了很多,謝謝。那麼開發人員如何在存儲在msdb中時更改包?只需刪除它並導入新版本的軟件包? – Josien

+1

無需刪除現有的部署(dtutil.exe,dtsinstall.exe或[PowerShell](http://billfellows.blogspot.com/2010/05/powershell-dtutil-ssisdeploymanifest.html)進程將覆蓋現有文件 – billinkc

2

這一個解釋的差異更好 social.msdn.microsoft.com

文件系統:

我敢肯定,你知道這個文件選擇是什麼,但 完成本節:您可以保存包在硬盤上的物理位置 或使用此選項的任何共享文件夾中,並且您應該在文件系統 選件中提供完整合格的存儲包路徑。

SQL服務器:

使用此選項,SSIS包將被存儲在msdb數據庫, 在sysssispackages表。你可以將它們分開放在你想要的任何文件夾中。這些文件夾是虛擬文件夾,在 sysssispackagefolders表中列出。所以用這個選項ssis包不會將 存儲爲物理文件。它將存儲在msdb數據庫中。

SSIS包存儲:

該選項實際上並不是真正的部署選項。爲什麼?因爲 這只是一個重定向步驟。我的意思是,如果你選擇 在BIDS此選項,當您嘗試保存包的副本..., 你會看到一個樹父「SSIS包」和兩個孩子: 「MSDB」和「文件系統」。如果你選擇在msdb數據庫相同的SQL服務器選項(這說明以前的 選項)中的「MSDB」包將 保存。如果你選擇「文件系統」,在SSIS包 將存儲作爲一個物理文件。 DTSX延伸但在這個地址 文件夾:\的Microsoft SQL服務器 \ 100個\ DTS \包。這就像文件系統選項,但你可以在任何位置不存儲包,你可以將它存儲在 預定義的物理位置下,當然你可以在那裏創建子文件夾 ,但是你不能通過父文件夾來保存任何其他的包 地方比預定義。

+0

+1,簡短但明確地解釋了三種(實際上是兩種)選項之間的區別。感謝您的鏈接! – Josien

相關問題