SQL ServerIntegration Services 提供可用於在運行時更新屬性值的包配置。配置是添加到已完成包中的屬性/值對。通常,在包開發期間您在包對象上創建包設置屬性,然后將配置添加到包中。當包運行時,它從配置中獲取新的屬性值。例如,通過使用配置,您可以更改連接管理器的連接字符串,或者更新變量的值。
包配置具有下列優點:
- 使用配置可以更輕松地將包從開發環境轉移到生產環境中。例如,配置可以更新源文件的路徑,或者更改數據庫或服務器的名稱。
- 將包部署到多台不同的服務器時,配置非常有用。例如,用於每個已部署包的配置中的變量可以包含不同的磁盤空間,並且如果可用磁盤空間不滿足此值,包將不會運行。
- 配置可以使包更加靈活。例如,配置可以更新在屬性表達式中使用的變量的值。
Integration Services 支持幾種不同的存儲包配置(例如 XML 文件、SQL Server 數據庫中的表以及環境變量和包變量)的方法。
每個配置都是一個屬性/值對。XML 配置文件和 SQL Server 配置類型可以包括多個配置。
一 xml配置文件
選擇SSIS菜單—>包配置,打開如下窗口,包配置就從這里開始配置。
選擇啟用包配置復選,然后單擊添加按鈕,如圖:
1. [配置類型]下拉列表框中可以看出,有多種類型的包配置。我們在這里選擇“XML配置文件”
2.選擇直接指定配置設置
3.單擊瀏覽將配置文件存放到指定的路徑。
配置文件默認為”.dtsconfig”類型,其文件格式時標准的XML格式。Integration Services 對配置文件的擴展名沒有嚴格的規定。如果把擴展名改為.txt、.xml等都沒有關系。單擊[下一步]按鈕,選擇配置需要的屬性了。如圖:
在左邊的對話框中,我們可以根據需要勾選要配置的屬性,當選中一個屬性的時候,該屬性的默認值就會在右邊屬性特性框中,這個值是可以改變的。完成屬性更改后,單擊下一步按鈕,如圖:
輸入[配置名稱],點擊完成,XML的配置就這樣輕松地完成了。在包配置組織程序框中將會出現如下圖顯示。然后單擊關閉按鈕,整個包配置的過程就結束。
我們轉到配置文件存放的目錄,找到剛才的配置文件"SqlConnectionString.dtsconfig ",看看它象什么樣子:
<?xml version="1.0"?>
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="******" GeneratedFromPackageName="ReadRecommendation" GeneratedFromPackageID="{47D1A86F-A1E0-4633-85B0-323C027DE88F}" GeneratedDate="2011/10/28 10:00:21"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="\Package.Connections[RecommendationDB].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=******;User ID=****;Initial Catalog=RecommendationDB;Provider=SQLNCLI10.1;Auto Translate=False;Application Name=SSIS-ReadRecommendation;</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[RecommendationDB].Properties[Password]" ValueType="String">
<ConfiguredValue>******</ConfiguredValue>
</Configuration>
</DTSConfiguration>
這個配置文件中,包含數據庫的連接方式,如果需要修改數據庫連接只要更改相應的屬性就可以搞定了。
二、SQL Service配置
這也是我們常用的配置方式之一,配置方式與XML配置大同小異,只是最后的配置屬性存儲到SQL Service數據庫中。
在[配置類型]下拉列表框中,選擇[SQL Server ],下面的配置界面也隨着發生了變化。
[連接],即SQL Server 即數據庫的連接,如果從下拉列表框中,找不到對應的連接,點擊[新增],就可以創建一個新的連接,這與在連接管理器中,創建OLE DB 連接是一樣的。
[配置表(A)],即配置屬性存放的Table ,如果這個Table 沒有事先創建好,點擊[新建],系統會默認給出其如下SQL語句,點擊[確定],Table 就創建完成了。
CREATE TABLE [dbo].[SSIS Configurations]
(
ConfigurationFilter NVARCHAR(255) NOT NULL,
ConfiguredValue NVARCHAR(255) NULL,
PackagePath NVARCHAR(255) NOT NULL,
ConfiguredValueType NVARCHAR(20) NOT NULL
)
[配置篩選器(F)]:這個很關鍵,它是區分每個包的配置屬性的key 值,也就是說,如果一個Table 中,存放有多個包的配置屬性的時候,每一個包就是根據這個這個key 值來進行過濾的,所以不同的包,應該有不同的key 值。[下一步],選擇要配置的屬性,與上面講的[XML配置文件]的處理方式一致了。下面,我們回到SQL Server 中,找出剛才創建的記錄,看看它又是啥面貌:
三、父包變量
父包變量的定義也非常簡單,打開包配置向導,如下圖:
[配置類型]:選擇“父包變量”。
[父變量]:這里輸入父包中的變量的名稱。
[下一步],選擇父包變量映射的屬性名稱,最后點擊完成,就會獲得如下圖所示的效果。
我們常見的包配置就這些了,環境變量、注冊表這兩種類型很少用到,這里就不多講了。
包配置給包的部署帶來了非常大的方便,最好的方式是每個服務器使用一個配置文件。但是,從包的配置界面可以看出,一個包可以應用多個配置文件,每個包配置按照[包配置組織程序]中顯示的順序應用(父包變量除外),如果一個配置中有一項失敗了,它只會發出警告,也不會引起包錯誤;反之,一個配置文件也可以應用到多個包中,如果我們靈活應用,包的無縫移置,也就不再是神話了。