SSIS变量与参数(SSIS Denali)

Har*_*had 19 ssis

  1. SSIS Denali中的变量和参数有什么区别?
  2. 如果有任何差异,那么变量不能做什么参数可以做什么?或相反亦然.
  3. 什么时候应该使用SSIS参数和变量?

我尝试在Google上搜索,但我没有得到一些信息.

谢谢预期!

小智 36

我认为一点背景将有助于理解参数概念.在这里,我将在与变量进行比较的背景下进行解释.要完全掌握参数概念,您可能还需要查找新的项目部署模型,环境,构建配置.

变量的用法

在2012年之前的SSIS中,如果我们需要在执行之前将任何外部值传递给包(因为我们都在做所有时间),我通常使用配置文件(或其他几种方式).假设我们有一个文件服务器,它将用于访问共享文件,我将使用变量来存储服务器名称,并将此变量公开给配置文件.如果更改了实际的文件服务器(dev env to test env等),我们只需要在配置文件中更改该变量的值,并且SSIS包保持不变.

一切看起来都不错,但有几件事我总是问自己为什么,也无法找出原因:

  1. 我将变量暴露给配置文件时,有100%的时间只暴露"值"属性.为什么SSIS允许公开所有其他变量属性?

  2. 为什么SSIS没有"私有"变量?通过"私人"我的意思是当我选择要配置的变量时,"私人"只是没有显示在选择列表中.SSIS包可能有几十个变量,对于内部价值持有者来说,暴露它们的重点是什么?为什么我必须一直滚动才能找到我需要暴露的唯一一个?

新项目部署模型

SSIS 2012引入了一种新的部署模型,即项目部署模型.简而言之,此模型将SSIS项目作为单个单元部署到SQL Server SSIS目录,并且此模型中不提供程序包配置(它在旧模型中可用作为程序包部署模型引用,使用SSIS 2012,您可以选择哪一个到使用,2012默认为新模型).

如果我们想要将一些值传递到SSIS包中,我们必须通过参数传递它们,并使用SSMS中的SSIS目录来配置参数的值(只有值,我们可以配置其他任何东西).参数和连接管理器在SSIS目录中自动公开,可以配置,在项目部署模型中可以配置以前通过配置文件提供的任何其他内容(世界更清洁).在SSIS包内部,参数可以与构建表达式的变量一样使用.但是,不能在SSIS包中修改参数,这非常有意义.(为什么我们需要更改从外部传入的值?如果必须,将值传递给变量,并在那里进行更改..)

总结

参数仅在项目部署模型中可用,并且它提供了在此模型中将值从外部传递到SSIS包的唯一机制.如果我们认为SSIS pacakge是一个OO类,那么参数可以被认为是公共属性,外部可以访问它并为其赋值(类本身可以/将使用它,但不能修改它).如果变量可以被认为是内部使用的私有变量,那么外部世界就不需要了解它.

对于旧的Package Deployment模型,没有Parameter,并且世界保持不变.


Dan*_*nry 5

简而言之,FYI,变量的值可以在运行时更改,但参数不能.参数可以帮助您进行项目部署,您可以在SSISDB目录中进行设置,而变量则不能.