在商業(yè)智能解決方案中,SSIS工程有兩種部署模式:工程部署(project deployment)和包部署(package deployment),默認是工程部署模式,在Package的管理上,工程部署模式是當前主流的部署模式,比包部署的更容易管理,也更容易對package進行調(diào)試和故障排除,而包部署模式是傳統(tǒng)的部署模式在包部署模式中。在包部署模式中,SSIS引擎支持包配置(Package Configuration)功能,用戶能夠在Package運行時動態(tài)修改屬性值。包配置是配置項的集合,每一個配置項(configuration item)是一個屬性/值對(property/value pair)。用戶向包配置中增加配置項,Package在運行時從包配置中獲取屬性值,對Package的執(zhí)行進行編程控制,特別在批量管理Package的場景中,比如,批量修改Package的某一個公共變量的值,切換Package的測試和產(chǎn)品環(huán)境等,包配置十分有用。

一般情況下,包配置信息存儲在SQL Server數(shù)據(jù)庫中,用戶能夠配置的Package對象共有四種,分別是:

  • Connection Managers:Package的鏈接管理器(connection managers);

  • Executables:package 的可執(zhí)行組件;

  • Propertites:package的properties;

  • Variables:package的variables;

以上四種Package對象,都能夠被參數(shù)化配置,這是SSIS能夠把其屬性值存儲在包配置中,并能夠在執(zhí)行時應(yīng)用屬性的配置值的基礎(chǔ)。

在執(zhí)行Package時,SSIS Package首先讀取包配置信息,將包配置中的屬性值應(yīng)用到Package中,然后執(zhí)行package的可執(zhí)行組件(executables);修改包配置中屬性的值,將動態(tài)改變Package的執(zhí)行上下文,例如,測試環(huán)境和產(chǎn)品環(huán)境的切換,修改鏈接管理器(Connection Manager)的連接字符串的值,使package將運行結(jié)果同步到測試環(huán)境中;在測試環(huán)境中package運行無誤后,再將其部署到Production 環(huán)境中,如果使用包配置管理鏈接管理器的鏈接字符串,那么只需要修改包配置中Connection Manager的連接字符串的值,而不需要對Package做任何修改。

一,切換到包部署模式
SSIS Project默認的部署模式是Project Deployment Model,在解決方案的工程列表中選中工程,右擊彈出快捷菜單,點擊“Convert to Package Deployment Model”,將Project的部署模式轉(zhuǎn)換為包部署模式。

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

切換到包部署模式之后,Project名稱之后顯示模式名稱:(package deployment model)

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

二,設(shè)計Package

向Package中添加一個變量(VarCode)和一個Execute SQL Task組件,在Task組件中執(zhí)行如下的TSQL語句腳本,“?”代表參數(shù),映射到變量(VarCode),把變量的值插入到指定的表中

insert into dbo.dt_testvalues(1,?,'a')

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

1,配置Task組件執(zhí)行的TSQL語句

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

2,配置Task組件的參數(shù)映射

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

三,啟用包配置

1,打開包配置向?qū)?/strong>

點擊SSIS 菜單,選擇“package configurations”,或者在Package的“Control Flow”面板的空白處右擊,彈出快捷菜單,選中“package configurations",都能打開包配置向?qū)А?/p>

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

2,啟用包配置

勾選“Enable package configurations”復(fù)選框,為當前Package啟用包配置功能

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

3,添加包配置

在”Package Configurations Organizer“中,點擊Add按鈕,在配置類型(Configuration Type)列表中選擇SQL Server ,這意味著,Package使用SQL Server數(shù)據(jù)庫來存儲包配置的信息,同時,Package從SQL Server數(shù)據(jù)庫中讀取配置項信息。

為了存儲包配置信息,必須設(shè)置SQL Server數(shù)據(jù)庫及配置表,選中“specify configuration settings directly”,指定SQL Server類型的配置設(shè)置:鏈接(Connection),配置表(Configuration table)和配置過濾器(Configuration Filter)。

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

4,配置表(Configuration Table)

在Package執(zhí)行時,如果指定SQL Server數(shù)據(jù)庫中沒有配置表,那么Package會自動創(chuàng)建配置表,默認情況下,SSIS用于創(chuàng)建配置表的腳本是:

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

CREATE TABLE [dbo].[SSIS Configurations](
    ConfigurationFilter NVARCHAR(255) NOT NULL,
    ConfiguredValue NVARCHAR(255) NULL,
    PackagePath NVARCHAR(255) NOT NULL,
    ConfiguredValueType NVARCHAR(20) NOT NULL)

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

配置表各個字段的含義是:

  • ConfigurationFilter: 用于唯一標識配置集的過濾器,每一個配置集都是屬性/值對(property/values pair)的集合,每個Package只能設(shè)置一個ConfigurationFilter,擁有相同的ConfigurationFilter的Packages,其配置集相同,共享相同的配置信息;

  • ConfigurationValue:配置屬性的值,用于更新配置屬性值;

  • PackagePath:配置屬性的路徑,包含配置屬性及其路徑信息,例如, "\Package.Variables[User::VarCode].Properties[Values]"

  • ConfiguredValueType:配置屬性的數(shù)據(jù)類型;

設(shè)置配置表的鏈接和配置集過濾器(Configuration filter):

  • Connection:用于設(shè)置訪問configuration table的鏈接;

  • Configuration Table:指定配置表的名字(table name);

  • Configuration filter:當多個Package共用一個Configuration Table時,需要為每個Package 設(shè)置 configuration filter,如果 filter 相同,表明package使用相同的配置數(shù)據(jù);如果某些Package有特殊的配置信息,可以為其設(shè)置不同的filter。

四,設(shè)置配置項(configuration item)

將變量VarCode的值配置到包配置中,這意味著,把變量VarCode的值存儲在[dbo].[SSIS Configurations]中,Package在執(zhí)行時讀取這個值,并把讀取到的值作為變量VarCode的值,供Task組件使用。

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

五,查看配置信息

當配置類型為SQL Server時,包配置信息存儲在SQL Server 數(shù)據(jù)庫中,默認的配置表名是[dbo].[SSIS Configurations]

select *from [dbo].[SSIS Configurations]

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

六,執(zhí)行package,查看執(zhí)行的結(jié)果

1,使用默認值執(zhí)行Package,查看Task組件執(zhí)行的結(jié)果

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

2,修改[dbo].[SSIS Configurations]中的ConfiguredValue,再次運行package,查看Task組件執(zhí)行的結(jié)果

update [dbo].[SSIS Configurations] set ConfiguredValue=2where ConfigurationFilter='configuration_parameter_value'

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

 

推薦文檔:

如何在 ETL 項目中統(tǒng)一管理上百個 SSIS 包的日志和包配置框架

SSIS Package Configurations

Understanding Integration Services Package Configurations

--業(yè)精于勤而荒于嬉,行成于思而毀于隨--
--歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處--

分類: SSIS

標簽: Package Configuration包配置