SSIS 包配置


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

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

  • Connection Managers:Package的鏈接管理器(connection managers);
  • Executables:package 的可執行組件;
  • Propertites:package的properties;
  • Variables:package的variables;

以上四種Package對象,都能夠被參數化配置,這是SSIS能夠把其屬性值存儲在包配置中,並能夠在執行時應用屬性的配置值的基礎。

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

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

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

二,設計Package

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

insert into dbo.dt_test
values(1,?,'a')

1,配置Task組件執行的TSQL語句

2,配置Task組件的參數映射

三,啟用包配置

1,打開包配置向導

點擊SSIS 菜單,選擇“package configurations”,或者在Package的“Control Flow”面板的空白處右擊,彈出快捷菜單,選中“package configurations",都能打開包配置向導。

2,啟用包配置

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

3,添加包配置

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

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

4,配置表(Configuration Table)

在Package執行時,如果指定SQL Server數據庫中沒有配置表,那么Package會自動創建配置表,默認情況下,SSIS用於創建配置表的腳本是:

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

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

  • ConfigurationFilter: 用於唯一標識配置集的過濾器,每一個配置集都是屬性/值對(property/values pair)的集合,每個Package只能設置一個ConfigurationFilter,擁有相同的ConfigurationFilter的Packages,其配置集相同,共享相同的配置信息;
  • ConfigurationValue:配置屬性的值,用於更新配置屬性值;
  • PackagePath:配置屬性的路徑,包含配置屬性及其路徑信息,例如, "\Package.Variables[User::VarCode].Properties[Values]"
  • ConfiguredValueType:配置屬性的數據類型;

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

  • Connection:用於設置訪問configuration table的鏈接;
  • Configuration Table:指定配置表的名字(table name);
  • Configuration filter:當多個Package共用一個Configuration Table時,需要為每個Package 設置 configuration filter,如果 filter 相同,表明package使用相同的配置數據;如果某些Package有特殊的配置信息,可以為其設置不同的filter。

四,設置配置項(configuration item)

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

五,查看配置信息

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

select *
from [dbo].[SSIS Configurations]

六,執行package,查看執行的結果

1,使用默認值執行Package,查看Task組件執行的結果

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

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

 

推薦文檔:

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

SSIS Package Configurations

Understanding Integration Services Package Configurations


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM