ssis包配置

悦光阴 悦光阴     2022-08-29     282

关键词:

在商业智能解决方案中,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

如何使用配置命令行执行 SSIS 包

】如何使用配置命令行执行SSIS包【英文标题】:HowtoExecuteSSISPackagewithConfigurationcommandline【发布时间】:2021-07-0414:28:31【问题描述】:有一种方法(命令行)可以根据我的2个配置之一执行SSIS包吗?我的命令是:"C:\\ProgramFiles\\Micro... 查看详情

ssis教程:创建简单的etl包--5.添加包部署模型的包配置(addingpackageconfigurationsforthepackagedeploymentmodel)(代

包配置允许您从开发环境的外部设置运行时属性和变量。 配置允许您开发灵活且易于部署和分发的包。Microsoft Integration Services 提供了以下配置类型:XML配置文件环境变量注册表项父包变量SQL Server 表Step1:&n... 查看详情

ssis教程:创建简单的etl包--6.对项目部署模型使用参数(usingparameterswiththeprojectdeploymentmodel)

在本课中,将修改在第5课:添加包部署模型的包配置中创建的包,以便使用项目部署模型。您将使用一个参数替换该配置值,以便指定示例数据位置。还可以复制本教程附带的已完成的Lesson5包。使用IntegrationServices项目配置向导... 查看详情

一步一步部署ssis包图解教程

...署工具,利用这些工具可以方便地将包文件(*.dtsx)、包配置文件(*.dtsconfig)以及包的其它相关文件,打包成一个安装文件,以利于到其它计算机安装与部署。下面我们以前面介绍的DEPJ1200为例,来详细介绍包部署的完整过程。(... 查看详情

SSIS 包需要很长时间或最终失败

...到了一台新的服务器机器,使用sqlserver2012部署。我将包配置为项目部署模式,10天后,所有包都运行良好,执行在相同范围的旧服务器中的时间。从前两天开始,包裹开始出现故障。仔细查看 查看详情

SSIS包相对于windows预定exe的优势

...间】:2010-09-1307:49:15【问题描述】:我在windowsscheduler下配置了一个exe,可以对一组数据进行及时的操作。exe调用存储过程来检索数据并执行一些计算并将数据更新回不同的数据库。我想知道,使用SSIS包而不是预定的exe有什么优... 查看详情

部署ssis数据包和使用job自动执行ssis的包

...署,如果你仅仅是SQLServer上面的,会简单很多,基本不用配置什么,如果还设计其他类型数据库,如PostgreSQL数据库,你可以参考我的文档:https://www.cnblogs.com 查看详情

SSIS - 序列化/锁定包

】SSIS-序列化/锁定包【英文标题】:SSIS-Serialize/Lockapackage【发布时间】:2019-07-0723:15:03【问题描述】:长话短说,我需要使用SSIS在Netezza中创建一个序列。我计划创建一个通用包,它将查找一些表并基于自然键和源,它要么返回... 查看详情

SSIS 服务器和数据库服务器的配置

】SSIS服务器和数据库服务器的配置【英文标题】:ConfigurationforSSISserveranddatabaseserver【发布时间】:2012-10-0901:07:23【问题描述】:我当前的环境是:3台服务器,一台用于源数据库,一台用于目标数据库,一台用于IS包。现在我需... 查看详情

ssis包部署packagestore后,在is中可以执行,agent执行却报错

...onService的启动账户都设置成同一个账户,这个账户一般也配置成本机的管理员账户。配置管理器中找到这两个账户 右键属性,然后将它们的启动账户都配置 查看详情

要恢复的 SSIS 包

】要恢复的SSIS包【英文标题】:SSISPackagetorestore【发布时间】:2016-08-1811:10:46【问题描述】:我需要创建SSIS包来恢复.bak文件,并且在恢复时,包必须缩小.mdf文件?包会满足要求吗?谢谢。【问题讨论】:为什么要使用SSIS,因... 查看详情

使用动态变量创建 SSIS 包

】使用动态变量创建SSIS包【英文标题】:CreateSSISpackagewithDynamicVariables【发布时间】:2015-10-2807:37:49【问题描述】:我们有一个创建SSIS包的新要求。当包被执行时,它应该将某些表数据复制到一个excel文件中。表名,excel文件路... 查看详情

从文件系统执行 SSIS 包

】从文件系统执行SSIS包【英文标题】:ExecutingSSISPackagefromFileSystem【发布时间】:2020-07-2913:01:52【问题描述】:我们使用以下写入批处理文件的命令执行SSIS包。(本地MSSQL数据库)D:\\ProgramFiles\\MicrosoftSQLServer\\130\\DTS\\Binn\\DTEXEC.exe... 查看详情

ssis包建好可以运行,但是放到job中就报错,怎么回事

参考技术A再说说你eclipse的Problems(问题)视图里面有什么错误列出来了?不让我们看错误消息那是很难猜测的。 参考技术B可能的原因是你的驱动是32位的,这要在你建作业的时候配置一下,如下图 查看详情

使用 SQL 身份验证执行 SSIS 包

】使用SQL身份验证执行SSIS包【英文标题】:ExecutingSSISPackagewithSQLAuthentication【发布时间】:2019-01-1421:32:21【问题描述】:我有一个通过HTTP与远程服务器通信的SSIS包。我使用从Web服务器调用的数据库(SQLServer2012)中的存储过程执行S... 查看详情

更改 SQL 列的数据类型时更新 SSIS 包

】更改SQL列的数据类型时更新SSIS包【英文标题】:UpdatingSSISPackagewhendatatypeforSQLcolumnischanged【发布时间】:2018-12-2817:57:02【问题描述】:我们必须更新SQL表中列的数据类型,该列在SSIS包中用作源。但是当我在更新数据类型后运行... 查看详情

什么是 SSIS 包,它有什么作用?

】什么是SSIS包,它有什么作用?【英文标题】:WhatistheSSISpackageandwhatdoesitdo?【发布时间】:2010-10-0201:44:58【问题描述】:谁能告诉我SSIS包的全部内容?我对数据仓库完全陌生,我对SSIS、DTL、ETL等术语感到疯狂。我正在寻找一个... 查看详情

如何在 SQL Server Management Studio 中查看 SSIS 包?

】如何在SQLServerManagementStudio中查看SSIS包?【英文标题】:HowdoIviewtheSSISpackagesinSQLServerManagementStudio?【发布时间】:2010-10-2716:27:04【问题描述】:啊!我通过导入向导创建了一个SSIS包,但使用ManagementStudio在服务器上找不到SSIS包... 查看详情