SSIS–变量和表达式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SSIS–变量和表达式
变量和属性表达式是 SSIS 设计中⾮常重要的组成部分,它们是提⾼SSIS 灵活性的主要⼿段。

变量和属性表达式是互相关联的,通常在属性表达式中常常使⽤变量,所以我把他们放在⼀起介绍。

变量
早在 SQL Server DTS 中就引⼊了变量的概念,它的定义就像其他程序语⾔⼀样,起到在程序中 SSIS Package 中重复使⽤,灵活赋值的作⽤。

程序设计语⾔中有全局变脸和局部变量的区别,从 SSIS 2005 开始,也引⼊了这个类似的定义。

SSIS 变量从作⽤范围上说有两种分类:Package 级别的变量和级别的变量。

Package 级别的变量跟全局变量的定义类似,它的作⽤范围是整个 SSIS Package,在 Package 的任何⼀个组件中都可以访问它。

Container 级别的变量类似于局部变量,它的使⽤范围局限于定义它的 Container 或者是控制流任务。

同⼀范围的变量它们的名字不能重复,但是不同范围的变量,他们的名字可以重复!
SSIS 变量从定义⽅式分为系统变量和⽤户⾃定义变量,系统变量顾名思义是系统内置的变量,我们不能增加和删除系统变量,我们只能读取它们的值⽽不能修改它们的值。

系统变量保存了⼀切与当前 Package 或者 Container 有关的信息,⽐如 Container 的名字、建⽴的时间、版本号等等。

如果我们的Package ⽤错误捕获的设置,系统变量中好保存着错误信息等。

系统变量的存取是根据当前 Package 中的任务不同⽽变化的。

⽤户⾃定义变量是最⽤开发者定义的变量,它常⽤来动态地设置 Package 中可以访问的信息,或者作为处理过程中的中间媒体保存动态的值等。

我们在使⽤属性表达式的时候通常需要访问系统变量或者⽤于⾃定义变量。

不论是系统变量还是⽤户⾃定义变量,它们有⼀个有⽤的属性:Raise Change Event,这个属性的默认值是 False. 如果它的值设置为Ture, 那么当SSIS Package 设置了执⾏⽇志(Logging) 的时候,⽇志中的 OnVariableValueChanged 事件才能捕获到这个变量的变化。

也就是说在默认情况下,即使在 Logging 中选择了 OnVariableValueChanged 属性,如果变量的 Raise Change Event 仍然是默认值 False 的话,那么它在运⾏中值的变化也不能被 Log 记录下来。

属性表达式
属性表达式是 SSIS Package 开发中相对⽐较⾼级的话题,它可以是我们的 SSIS Package 变得相当地灵活。

属性表达式存在于所有的控制流任务和数据连接中,它⽤来在运⾏阶段设置该任务或者数据连接的某些属性,如果⼀个控制流任务使⽤属性表达式设置了它的值,那么它在属性表达式中设置的值将在运⾏阶段覆盖设计阶段的赋值。

下⾯我⽤⼀个例⼦来介绍属性表达式的使⽤,在这个例⼦中我使⽤⼀个变量来动态地设置 SQL Statement 的值
打开上⼀节课我介绍 For Loop Container 的例⼦。

新增加⼀个 For Loop Container 级别的变量:MyName, Data Type 设置为 String, 将其默认值设置为 ThisName。

双击 For Loop Container 中的 Execute SQL Task 打开 Expression 页⾯, 这个任务⽤来向 Clients 表中插⼊记录。

打开属性表达式编辑器,在 Property (属性)列中选择 SqlStatementSource, 在表达式中输⼊下⾯的语句:
“Insert Into dbo.Clients (ClientName) Values (‘” + @[User::myName] + “‘ + Convert(Varchar,?))”。

相关文档
最新文档