本篇文章是Integration Services系列的第十五篇,详细内容请参考原文


简介
在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到SSIS 2012.
在这一篇,我们将探讨SSIS变量的姊妹:SSIS参数。我们将展示参数配置,通过包参数管理动态属性值,以及在SSIS包执行期间参数是如何配置和使用的。
首先在SSDT-BI打开转换过的My_First_SSIS_Project,如图15.1所示:
【译】第十五篇 Integration Services:SSIS参数
图15.1
My_First_SSIS_Project打开,解决方案资源管理器如图15.2所示:
【译】第十五篇 Integration Services:SSIS参数
图15.2
SSIS Parameters 101
SSIS参数和SSIS变量非常相似。在SSIS 2012中变量和参数可以互换使用。它们之间有一些不同点:
->一旦SSIS包开始执行,参数仅供只读
->参数的作用域是项目和包级别
->参数拥有一个'敏感'属性
->参数拥有一个'必需'属性
->因为SSIS包开始执行后,参数仅供只读,不能使用表达式控制参数的值
Project Parameters
项目参数能被SSIS项目中的任何SSIS包使用/消耗。它们只能在项目部署模型中使用。
项目部署模型是SSIS 2012新引入的。项目参数是项目部署模型的一个新特性。其他的特性包括包参数、项目连接管理、SSIS 2012目录部署。
在解决方案资源管理器,双击Project.params对象,打开项目参数,如图15.3所示:
【译】第十五篇 Integration Services:SSIS参数
图15.3
项目参数窗口提供一个包含三个按钮的工具栏:
->添加参数
->删除参数
->将参数添加到配置中
添加参数
点击添加参数按钮添加一个新的项目参数到My_First_SSIS_Project项目:
【译】第十五篇 Integration Services:SSIS参数
图15.4
一个叫做"Parameter"的项目参数添加到SSIS项目,这是默认的参数名称,图15.4显示了参数的默认属性值:
数据类型:Int32
值:0
敏感:Flase
必需:Flase
说明:[空]
参数和变量共享很多数据类型,但不是全部,图15.5显示了参数和变量的所有数据类型:
【译】第十五篇 Integration Services:SSIS参数
图15.5
初略扫视一下发现参数的数据类型是变量的数据类型的子集。
The Value property of a parameter is checked for data type consistency once the Value cell loses focus.如果我选择数据类型为"Int32",然后在值单元键入"NaN",当我点击其他单元格时会得到图15.6所示的错误:
【译】第十五篇 Integration Services:SSIS参数
图15.6
敏感属性是一个布尔值且默认是Flase.将这个属性设置为True会将参数的值当作敏感。如果是True,SSIS 2012会使用项目保护级别中指定的方法加密参数的值。你可以在解决方案资源管理器下,右击项目选择属性(图15.7),访问项目保护级别属性和其他项目属性:
【译】第十五篇 Integration Services:SSIS参数
图15.7
点击属性会打开My_First_SSIS_Project属性页。一旦属性页显示,你可以通过点击ProtectionLevel属性文本框中的省略号设置项目保护级别,如图15.8所示:
【译】第十五篇 Integration Services:SSIS参数
图15.8
注意图15.8:一旦敏感属性设置为True,参数的值属性就会被隐藏。
必需属性是一个布尔值且默认是False.当设置为Flase,参数对SSIS项目执行不是必需品。当设置为True,必需为参数提供一个值。
说明属性用于解释参数的目的、使用和可选值等。
为了演示,我配置这个参数如下:
名称:Parameter
数据类型:Int32
值:0
敏感:True
必需:True
说明:Test Parameter
【译】第十五篇 Integration Services:SSIS参数
图15.9
删除参数
删除参数按钮会将选中的参数从项目参数中移除。如图15.10所示,显示警告信息,除非你勾选了"不再显示此消息"复选框(建议不要勾选此复选框),告知数据集成开发者项目参数删除后,使用该参数的包可能无法执行:
【译】第十五篇 Integration Services:SSIS参数
图15.10
包参数
在我们讨论SSIS包参数前,让我们在项目中添加一个新SSIS包。解决方案资源管理器中,右击项目名称并点击"新建SSIS包",如图15.11所示:
【译】第十五篇 Integration Services:SSIS参数
图15.11
重命名新SSIS包为LoadWeatherData.dtsx,如图15.12所示:
【译】第十五篇 Integration Services:SSIS参数
图15.12
重命名SSIS包会在SSDT-BI中打开此包。包参数在参数页签中配置,如图15.13所示:
【译】第十五篇 Integration Services:SSIS参数
图15.13
在我们配置SSIS包参数前,让我们获取一些真实数据。你可以访问这个地址(http://andyweather.com/data/WeatherData_Dec08.zip)获取一个真实数据文件。
解压获取的文件到你想存放的路径。它包含一个逗号分隔(CSV)文件sensor1-all.我是在My_First_SSIS_Project的SSIS解决方案目录创建一个data文件夹:
【译】第十五篇 Integration Services:SSIS参数
图15.14
Sensor1-all.csv包含Farmville Virginia地区收集的天气数据。我喜欢它,因为它是真实数据,而不是样例数据。It’s messy. No one’s data is as clean as most sample databases out there.
包参数的创建和项目参数类似。让我们创建一个包参数,下面是参数的属性值:
名称:SourceFilePath
数据类型:String
值:sensor1-all.csv存放位置
敏感:False
必需:True
说明:Weather data source file
【译】第十五篇 Integration Services:SSIS参数
图15.15
接着让我们回到控制流面板,并添加一个数据流任务,如图15.16所示:
【译】第十五篇 Integration Services:SSIS参数
图15.16
重命名数据流任务为"DFT Stage Temperature and Humidity",如图15.17所示:
【译】第十五篇 Integration Services:SSIS参数
图15.17
双击"DFT Stage Temperature and Humidity"打开数据流。从SSIS工具箱,展开其他数据源条目,拖取一个平面文件源到数据流任务面板。重命名平面文件源为"FFSrc Temperature and Humidity",如图15.18所示:
【译】第十五篇 Integration Services:SSIS参数
图15.18
双击"FFSrc Temperature and Humidity"打开平面文件源编辑器,如图15.19所示:
【译】第十五篇 Integration Services:SSIS参数
图15.19
这个SSIS包中没有平面文件连接管理器。点击新建按钮创建并配置一个新的平面文件连接管理器,如图15.20所示:
【译】第十五篇 Integration Services:SSIS参数
图15.20
注意:点击新建按钮会发生下面两件事:
1、连接管理器页签会添加一个新的平面文件连接管理器
2、会打开新的平面文件连接管理器编辑器
重命名连接管理器名称为"FFCM Temperature and Humidity"点击浏览,导航到sensor1-all.csv文件存放位置,打开文件对话框中修改文件类型筛选为"*.csv",就可以看到sensor1-all.csv文件,选择它并点击打开按钮,如图15.21所示:
【译】第十五篇 Integration Services:SSIS参数
图15.21
平面文件连接管理器常规页的文件名文本框会显示ensor1-all.csv文件的完整路径。确保勾选上在第一个数据行中显示列名称,如图15.22所示:
【译】第十五篇 Integration Services:SSIS参数
图15.22
列页不要做任何修改。注意你可以设置行和列分隔符,并且你可以看到变更的预览,如图15.23所示:
【译】第十五篇 Integration Services:SSIS参数
图15.23
图15.24显示了平面文件连接管理器编辑器的高级页。我们也不会对这个页面做任何修改,但是我们可以先观察。在这里你可以为个别列修改列名、指定列分隔符。你也可以修改数据类型属性。默认,所有的平面文件连接管理器的列都是设置为长度为50的字符串类型:
【译】第十五篇 Integration Services:SSIS参数
图15.24
平面文件连接管理器的预览页允许你配置连接管理器跳过部分数据行数。它同样提供网格形式预览前100行的数据,如图15.25所示:
【译】第十五篇 Integration Services:SSIS参数
图15.25
点击确定按钮完成文件连接管理器的配置,并返回到平面文件源编辑器,如图15.26所示:
【译】第十五篇 Integration Services:SSIS参数
图15.26
点击确定按钮关闭平面文件源编辑器,"DFT Stage Temperature and Humidity"数据流任务应该如图15.27所示:
【译】第十五篇 Integration Services:SSIS参数
图15.27
前行之前,打开SSMS连接到一个SQL Server实例。我使用的是SQL Server 2008 R2,如图15.28所示,我连接到WORK\SQL08R2实例:
【译】第十五篇 Integration Services:SSIS参数
图15.28
打开新建查询,键入代码15.1中的脚本:

Use master
go
If Not Exists(Select name From sys.databases
               Where name = 'WeatherData')
begin
    print 'Creating database WeatherData'
    Create Database WeatherData
    print 'WeatherData database created'
end
Else
    print 'WeatherData database already exists.'
View Code

相关文章:

  • 2021-12-31
  • 2021-11-19
  • 2021-10-24
  • 2021-08-10
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-10
  • 2021-04-23
  • 2021-07-27
  • 2021-10-07
  • 2021-06-30
相关资源
相似解决方案