【问题标题】:SSIS Variables vs Parameters (SSIS Denali)SSIS 变量与参数 (SSIS Denali)
【发布时间】:2013-03-11 11:28:43
【问题描述】:
  1. SSIS Denali 中的变量和参数有什么区别?
  2. 如果有任何区别,那么哪些变量不能做而参数可以做什么?反之亦然。
  3. 什么时候应该使用 SSIS 参数和变量?

我尝试在 Google 上搜索,但未能获得一些信息。

感谢期待!

【问题讨论】:

  • 这是关于生命周期和范围的。有关此主题的更多信息,请参阅以下视频以获取带有示例的详细演示:youtube.com/watch?v=a7MN4jCpY98

标签: ssis


【解决方案1】:

我认为一点背景知识将有助于理解参数概念。在这里,我将在与变量进行比较的情况下对其进行解释。要完全掌握 Parameter 概念,您可能还需要查找新的 Project Deployment Model、Environment、Build Configuration ......

变量的使用

对于 2012 年之前的 SSIS,如果我们需要在执行之前将任何外部值传递给包(就像我们一直都在做的那样),我通常使用配置文件(或其他几种方式)。假设我们有一个文件服务器,它将用于访问共享文件,我将使用变量来存储服务器名称,并将此变量公开给配置文件。如果实际的文件服务器发生变化(开发环境到测试环境等),我们只需要在配置文件中更改该变量的值,SSIS 包保持不变。

一切看起来都不错,但有几件事我总是问自己为什么并且无法弄清楚为什么:

  1. 当我向配置文件公开变量时,100% 的时间,我只是公开“值”属性。为什么 SSIS 允许公开所有其他变量属性?

  2. 为什么 SSIS 没有“私有”变量? “私有”是指当我选择要配置的变量时,“私有”变量并没有显示在选择列表中。 SSIS 包可能有几十个变量,对于内部价值持有者,公开它们有什么意义?为什么我必须一直滚动才能找到我需要公开的唯一一个?

新项目部署模型

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

如果我们想要将一些值传递到 SSIS 包中,我们必须通过 Parameters 将它们传递,并使用 SSMS 中的 SSIS 目录来配置参数的值(只有值,我们无法配置其他任何东西)。参数和连接管理器在可以配置的 SSIS 目录中自动公开,以前通过配置文件可用的其他任何东西都不能在项目部署模型中配置(世界要干净得多)。在 SSIS 包中,就构建表达式而言,参数的使用方式与变量的使用方式相同。 但是,不能在 SSIS 包中修改参数,这很有意义。 (为什么我们需要更改从外部传入的值?如果必须,将值传递给变量,然后在那里进行更改..)

总结

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      变量和参数与java中的类似, 我们以参数的形式将某些值传递/传递给某些方法/任务,并且我们在该特定任务中使用它们,我们无法更改这些值,因为它们是该方法的外部事物,类似地在 SSIS 中,项目参数用于设置某些变量或在包中动态连接。其中变量仅限于包级别的内部。

      【讨论】:

        【解决方案4】:

        它的工作原理是这样的: 假设您有一个名为 ServerName 的项目参数:

        假设您将 SSIS 包部署到两个集成目录环境中,一个配置用于生产服务器,另一个配置用于测试服务器:

        然后您的 ServerName '参数'将在 prod 中设置为 prod 服务器地址,并在测试环境中设置为包含测试服务器地址。 如果 ssis 包中的任何变量需要运行时值(例如,该变量用于在运行时分别为生产服务器或测试服务器设置连接),那么该变量将使用上面的参数来查找要连接的正确服务器。

        所以在特定环境的场景中通常需要参数。

        根据您在 Visual Studio 中配置解决方案的方式,有两种类型的参数:项目参数或包参数。项目中的所有包都可以访问项目参数。

        【讨论】:

          【解决方案5】:

          变量和参数有很多区别,下面很少提到:

          • Variables 值可以在运行时更改,但 parameters 值不能更改。
          • Variables 只能用于包中,我们不能将其用于解决方案中的其他包,但我们可以将参数用于多个包(包存在于Solution Explorer 中)。

          【讨论】:

            【解决方案6】:

            参数使用从包外部发送数据,如用户名、密码或连接字符串等。变量在包内部使用。这意味着您可以在其中一个 SSIS 包中定义一个变量并在包级别使用它。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-09
              相关资源
              最近更新 更多