首页 > 代码库 > [译]Stairway to Integration Services Level 15 – SSIS 参数回顾

[译]Stairway to Integration Services Level 15 – SSIS 参数回顾

介绍

在本文中我们会研究SSIS变量姐妹: SSIS 变量. 我们会演示参数配置,通过包参数管理动态属性值,然后会演示SSIS包执行的时候参数怎么被配置的.

SSIS Parameters 101

SSIS参数和SSIS变量很像.  在SSIS 2012里面 变量和参数是可以互换的. 不过有重要的不同点: 

  • SSIS包开始执行以后,参数是只读的.
  • 参数的作用域为项目或者包级别.
  • 参数有 Sensitive 属性.
  • 参数有 Required 属性.
  • 因为参数在SSIS包执行的之后参数是只读的.所以参数值无法通过表达式组合.

项目参数 Project Parameters

项目参数可以被SSIS项目中所有包使用. 不过他们必须在Project Deployment 模型中使用.

Project Deployment 是 SQL Server 2012 Integration Services新功能. 项目参数是Project Deployment 模型的新特性之一. 其他特性包括包参数, 项目连接管理器, 以及部署到新的 SQL Server 2012 Integration Services Catalog.

在Solution Explorer, 双击Project.params 对象:

image

Figure 3

项目参数窗口工具栏有三个按钮:

  • Add Parameter
  • Delete Parameter
  • Add Parameters to Configurations
Add Parameter

点击Add Parameter按钮添加一个新的项目参数到 My_First_SSIS_Project SSIS 项目:

image

Figure 4

“Parameter” 被添加到 SSIS 项目. 参数默认属性如下:

  • Data Type: Int32
  • Value: 0
  • Sensitive: False
  • Required: False
  • Description: [Empty String]

对比了一下参数数据类型和变量数据类型.:

  • Boolean
  • Byte
  • DateTime
  • Decimal
  • Double
  • Int16
  • Int32
  • Int64
  • SByte
  • Single
  • String
  • UInt32
  • UInt64

下面三个是变量特有的数据类型:

  • Char
  • DBNull
  • Object

Sensitive(敏感) 属性是一个布尔值默认为 False.  设置为True把变量值标记为敏感的. 如果为 True, SQL Server 2012 Integration Services 会加密这个值. 这取决于 ProtectionLevel 属性的设置. 可以在项目属性里面进行配置

image

Figure 7

 image

Figure 8

注意: 参数的Sensitive 属性一旦被设置为True , Value值就会被掩盖.

Required 属性也是布尔值,默认为 False. 当值为False的时候表示SSIS 项目执行时并非必要,若设置为True,则该值必须提供SSIS项目执行时使用(必须有值).

为了演示目的,配置如下:

  • Name: Parameter
  • Data Type: Int32
  • Value: 0
  • Sensitive: True
  • Required: True
  • Description: Test Parameter

image

Figure 9

 

包参数 Package Parameters

包参数可以在参数标签上配置:

image

Figure 13

开始配置SSIS包参数之前先下载点真实数据 WeatherData_Dec08.zip

建立个新的包变量 SourceFilePath

Name: SourceFilePath

  • Data Type: String
  • Value: <the location of sensor1-all.csv on your system>
  • Sensitive: False
  • Required: True
  • Description: Weather data source file

image

Figure 16

返回Control Flow添加一个Data Flow Task 然后重命名至“DFT Stage Temperature and Humidity” :

image

Figure 18

双击 “DFT Stage Temperature and Humidity” 拖一个 Flat File Source 然后改名为“FFSrc Temperature and Humidity”:

image

Figure 19

双击FFSrc Temperature and Humidity 然后创建连接管理器 ,把连接管理器的名字改为“FFCM Temperature and Humidity.” 选择你刚才下载的sensor1-all.csv 文件

image

Figure 28

完成后如下 :

image

Figure 29

在SQL Server里面创建一个数据库.

Use mastergoIf Not Exists(Select name              From sys.databases                  Where name = WeatherData) begin  print Creating database WeatherData  Create Database WeatherData  print WeatherData database created endElse print WeatherData database already exists.

Listing 1

再拖一个 OLE DB Destination ,然后重命名为 “OLEDest Stage Temperature”:

image

Figure 35

双击 “OLEDest Stage Temperature” 创建连接管理器与刚才建立的 WeatherData数据库连接:

Figure 41

表格名称改为StageTemperature 

image

Figure 42

点击“FFCM Temperature and Humidity”平面文件连接管理器,然后他属性里面把 Expressions的 ConnectionString 属性设置为 SourceFilePath 包参数 :

image

Figure 48

按F5执行包,结果如下:

image

Figure 55

如果一切都没问题,那么你的执行结果会和 Figure 55 相同.

现在把 sensor1-all.csv  移到上级目录 Dec08 下 :

image

Figure 56

再次执行包..会出现类似下面的报错:

image

Figure 57

停掉 debugger. 修正 SourceFilePath 的路径:

image

Figure 58

现在再次运行包 :

image

Figure 59

测试成功

原文链接: http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/106428/

[译]Stairway to Integration Services Level 15 – SSIS 参数回顾