在运行SSIS包时,如何动态更新变量值

实现方式

        若要动态更新变量,可以为变量创建配置,将这些配置部署到包中,然后在部署包时更新配置文件中的变量值。这样,在运行时,包就可以使用更新后的变量值。

        下面通过一个简单的例子来说明如何实现动态更新变量值。

例子要求

        把一张Order表从远程计算机实例“TRIY-2FE792BB5D\SQL2008DE” 根据需要输入(Order.dbo.Name),把数据导入到本机实例"RERI-6EC5991410\SQL2008DE"

例子实现

      创建一个简单的“数据流任务”,具体操作步骤这里就略过,来看在作用域"Package",创建一个用户定义的变量"Name".数据类型为"String",值为"Nr.00002"

 

 在"OLE DB 源"引用变量:

 

待SSIS包调式OK过,我们接下来就把变量配置部署到包中,在菜单"SSIS"找到“包配置”:

 这里设置了一个配置类型为“SQL Server”的包配置。

 

 [dbo].[SSIS Configurations]是表名,创建在本机实例"RERI-6EC5991410\SQL2008DE"的“Order”所在数据库中。

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

 [dbo].[SSIS Configurations]中字段ConfigurationFilter 存储的是,配置筛选器的值"OrderName"

下面就是设置[dbo].[SSIS Configurations]中ConfiguredValue对应SSIS包变量"Name "的value属性

 

完成配置,我们就可以在,本机实例"RERI-6EC5991410\SQL2008DE"的“Order”所在数据库中,查到对应的配置数据:

 

 

 部署SSIS包完成后,根据需要修改 [dbo].[SSIS Configurations]中的配置值"Nr.00002",执行SSIS包时候,包中变量"Name"的值就会动态更新,如现在我们把"Nr.00002"变成"Nr.00010"


Update  dbo. [ SSIS Configurations ]
    
Set  ConfiguredValue = ' Nr.00010 '
    
Where  ConfigurationFilter = ' OrderName '

 

执行包后,我们可以看到包执行进度中,包调用上面配置的配置字符串“RERI-6EC5991410\SQL2008DE.SSIS_DB.sa”

 

 这样就实现了文章开头的要求部分。

 另,在包配置时候,配置类型也可以设置成别的类型,经常用的是XML配置文件,样式如下:

   <? xml version="1.0"  ?>  
< DTSConfiguration >
< DTSConfigurationHeading >
  
< DTSConfigurationFileInfo  GeneratedBy ="MONO\Andy"  GeneratedFromPackageName ="Package"  GeneratedFromPackageID ="{36280B53-9CF8-4681-A546-12C05A82957B}"  GeneratedDate ="2011-4-16 1:00:24"   />  
  
</ DTSConfigurationHeading >
< Configuration  ConfiguredType ="Property"  Path ="\Package.Variables[User::Name].Properties[Value]"  ValueType ="String" >
  
< ConfiguredValue > Nr.00002 </ ConfiguredValue >  
  
</ Configuration >
  
</ DTSConfiguration >

 

 

 

 

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值