SSIS 参数与环境
微软 BI 系列随笔 - SSIS 基础 - 参数与环境
简介
在上一篇博客中,主要讲述了如何实现SSIS的项目部署,参见 微软 BI 系列随笔 - SSIS 2012 基础 - SSIS 项目部署模型
本文主要介绍SSIS 2012中的参数与环境,以及如何利用这些信息来实现SSIS项目的开发和部署之后的运行。
关于参数
SSIS 2012中参数主要分为项目参数和包参数。参数在包的运行过程中是只读的。正确的使用参数能大大提高我们开发和部署时的效率。
项目参数
项目参数是SSIS 2012中新加入的功能。项目参数可以在项目内所有的包中共享,一次配置,多处使用。因此在项目参数中,通常是设置一些比较通用的信息,比如数据库连接,服务器连接,或者其他的业务范畴的信息。
下图列出了在项目中常用的一些参数设置。
通过设定项目使用的数据库连接信息,就可以在项目的Connection manager中使用这些参数实现动态的连接。
包参数
包参数通常定义包执行时需要的一些数据,比如筛选文件的条件,文件采集的位置,功能的开关等等。这些参数定义在包级别,相当于一个程序的入口参数。
环境
在项目的开发到交付的过程中,通常会有各种环境(DEV,STG,UAT,PRD),SSIS2012中引入了环境(Environment)来适配。
这个环境是存在于SSIS目录(Intergration Services Catalogs)中,在部署完一个SSIS项目后,在项目同级别目录会自动创建一个环境(Environments)目录。在这个目录下面可以添加我们的运行时环境配置。
下面写一下为项目配置环境的步骤。
- 添加环境
在环境文件夹上右键单击,选择“添加环境”,系统会弹出一个创建环境的窗口,需要填写环境名字和描述。如下图
点击OK将会在环境文件夹创建新环境。
- 创建环境变量
选择刚刚创建的环境,右键单击选择属性。这时候会打开环境属性窗口。在窗口左边选择页面中点击变量,在右边的窗口中可以创建一系列的变量。这些变量可以与包和项目中定义的参数相对应,一个参数对应一个变量。建议将变量名设置为与参数名称一样。如果两个包使用了同样的参数名称,值不一样,可以在变量名前加前缀标志。我创建的环境变量如下(红线框起来的部分是因为两个包使用了同样的参数名加以区分):
在权限页可以设置每个账户对这个环境的读写和管理权限。
- 复制环境变量
通常情况下需要配置多个环境,这些环境会使用同样的环境变量名,只是值不一样。如果变量很多的话,一个个配置起来也很麻烦。这个时候该怎么办呢?开动我们的大脑,想想之前配置的DEV环境变量都存在哪里了?DEV环境变量都存在哪里了?DEV环境变量都存在哪里了?(重要的事情说三遍)
这个时候我们去查看一下数据库,发现有一个叫SSISDB的库,在这个库里面有几张表看起来和我们的环境有关系。他们分别是[internal].[environments],[internal].[environment_variables],[internal].[environment_permissions]。怎么样,是不是已经要脑洞大开了,没错,就是这三张表。
[internal].[environments] -- 这个表存放的是环境信息,主要有环境ID,名称,文件夹ID,描述和创建者信息。
[internal].[environment_variables] -- 这个表存放的是环境变量信息,主要有变量ID,环境ID,名称,描述,类型,值以及其他信息。
[internal].[environment_permissions] -- 这个表存放的是权限控制信息。
知道了这么多以后该怎么做,相信大家已经心里有数了。但是我还是给大家列出了详细的步骤哦(楼主好人,谢谢分享)
首先是按照你的需要,在环境文件夹中创建你所有需要的环境,比如我创建了DEV,INT,STG,PRD环境。除了DEV中是已经配置了变量,其他的目前都是空白。这些环境每个都有一个唯一的标志,在属性页的第一页里面(怎样,我不说你注意到了吗?)
接下来在SSISDB数据库执行如下脚本,比如我的DEV环境标志是1,INT的标志是2,我现在要把DEV的变量复制到INT里面去。
INSERT INTO [internal].[environment_variables]
([environment_id]
,[name]
,[description]
,[type]
,[sensitive]
,[value]
,[sensitive_value]
,[base_data_type])
SELECT 2 as environment_id --INT Environment ID
,[name]
,[description]
,[type]
,[sensitive]
,[value]
,[sensitive_value]
,[base_data_type]
FROM [SSISDB].[internal].[environment_variables]
where environment_id = 1 --DEV Environment ID
好了,现在打开INT环境,查看一下他的属性,变量是不是都在了啊。(笑湿了吧)
使用同样的语句来给其他环境创建变量吧。
- 引用环境变量
配置了这么多环境和变量了(累湿了),如何使用它们呢?下面接着给大家伙细细道来。
在项目文件夹选择之前部署的项目,右击(右键单击)选择配置,选择参考页(References)。这里有一个列表是用来选择环境和文件夹的。点击添加按钮,有一个弹出框让你选择环境。你可以选择当前目录下面或者其他目录下面(你会定义到别的项目的目录下面去吗?)的环境,一次只能选择一个(连多选都不给咱)。然后就可以看到环境一个个的添加进来了。我的长成下面这个样子了:
然后你就可以在参数页使用环境里面的变量了哟。
选择参数页,选好作用域(Scope),然后可以看到你在项目级别拉,包级别拉定义的参数了吧。选中一个参数,单击Value右边的那个按钮,在弹出的框框里面选择使用环境变量,如下所示。
现在知道在各个环境中定义相同的变量名的好处了吧(记得值不要一样哦)。快去给每个参数设置一下吧。
- 使用环境变量
到这一步已经接近大功告成了(码字好累,继续写),但是这么多环境变量怎么使用呢?
想想我们开发了这么多包,又部署了,有配置了,主要是为了干甚呢?不就是为了执行吗。好吧,选中包,右击选执行。
怎么回事,那么多必填的值啊,往下看,哦,要选择环境啊。
之前是这样:
之后是这样:
好了,点击OK按钮去执行吧。你也可以从上边选择生成脚本去执行(自己找吧,不截图了)。
到这一步,一切都很完美了。
使用了参数以后,整个项目的开发,部署以及运行,一切都如行云流水,就好象子画带着小骨在御剑飞行啊,好舒服的呢。
接下来,老大,我的SSIS是要长期执行的,怎么做啊?
别急啊,中午了,下一篇继续讲解如何将SSIS部署到SQL Job吧。
SSIS 参数与环境的更多相关文章
- SSISDB6:参数和环境变量
SSISDB 系列随笔汇总: SSISDB1:使用SSISDB管理Package SSISDB2:SSIS工程的操作实例 SSISDB3:Package的执行实例 SSISDB4:当前正在运行的Pac ...
- 第十五篇 Integration Services:SSIS参数
本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...
- [译]Stairway to Integration Services Level 15 – SSIS 参数回顾
介绍 在本文中我们会研究SSIS变量姐妹: SSIS 变量. 我们会演示参数配置,通过包参数管理动态属性值,然后会演示SSIS包执行的时候参数怎么被配置的. SSIS Parameters 101 S ...
- Linux进程-命令行参数和环境列表
命令行参数 在C中,main函数有很多的变种,比如 main(), int main(), int main(int argc, char *argv[]), int main(int argc, c ...
- 【译】第十五篇 Integration Services:SSIS参数
本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...
- SSIS,参数坑
首先我有一个这样的饿存储过程, @procGuid 这个是 存放 guId的字符串 当如传入 0 的时候, @procGuid 会赋值,并且返回. ) ,@procGuid output print ...
- SSIS 64位环境访问Oracle11g
SSIS 为了要能够在64位的机器上面让SSIS存取Oracle,当然需要安装64位的Oracle Provider,但是遇到最大的问题在于SSIS在执行的时候分成两种组件,分别是DTExec.exe ...
- 【转载】SSIS 64位环境访问Oracle11g
转载博客:http://www.dotblogs.com.tw/allanyiin/archive/2010/11/21/19585.aspx SSIS 为了要能够在64位的机器上面让SSIS存取Or ...
- 34.Docker安装Mysql参数及环境变量使用
容器安装好后,通过exec进去到容器的内部, 容器安装的时候两种容器配置参数 直接在镜像的后面加配置 第二种方式 把这段代码拷贝过来.参数我们可以写在镜像的后面 我们把参数写在镜像的后面 然后我们需要 ...
随机推荐
- gitgub利用客户端实现简单的上传和同步
新建项目 打开客户端(将项目拷贝到本地) 选择要clone到的文件夹 想该文件夹中,导入自己需要上传的代码 然后,在网站上登录自己的gitgub,就可以看到刚才上传的项目了╮(╯▽╰)╭
- web应用程序测试方法和测试技术详述
1.界面测试 现在一般人都有使用浏览器浏览网页的经历,用户虽然不是专业人员但是对界面效果的印象是很重要的.如果你注重这方面的测试,那么验证应用程序是否易于使用就非常重要了.很多人认为这是测试中最不重要 ...
- (40) Aeroo 服务安装
服务器 Odoo 8.0 操作系统: Ubuntu trusty14.04 说明:安装aeroo 要的要两个服务 areoo-docs 和 soffice 这里设定两个端口 8989 和 8100 = ...
- Google API在线生成二维码的方法
1.先看一个实例,是用Google API生成西部e网的网站地址www.weste.net二维码的方法: http://chart.apis.google.com/chart?cht=qr&c ...
- 初学UML——用例图
开始学习UML建模语言,从用例图入手.建模工具选择visio 用例图描述的是参与者所理解的系统功能,主要元素是用例和参与者,是帮助开发团队以一种可视化的方式理解系统的功能需求.这时处于项目初始,分析用 ...
- win7任务栏只显示日期不显示年月日
某一天突然发现笔记本任务栏上的时间显示只剩下了时间,没有了年月日 于是百度 搜到的结果大多是如何设置显示的格式 yyyy-MM-dd 继续搜 终于搜到了正确答案 结果令我瞠目结舌 着实无奈 是因为 ...
- css布局之一列布局
在我们浏览网页中经常看见一列布局其实一列布局就是 一般的一列布局的都是固定宽度的 body{margin:0;padding:0} .main{width:800px;height:300px;bac ...
- 黑马程序员——OC语言 内存管理
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)计数器 每个对象内部都保存了一个与之相关联的整数,称为引用计数器,当 ...
- C语言使用cmd命令并获取输出方法
转自http://blog.csdn.net/hxh129/article/details/8000205 C语言使用cmd命令并获取输出方法 在实践中,我们有时候需要用C语言来调用cmd的命令,并得 ...
- windows核心编程---第六章 线程的调度
每个线程都有一个CONTEXT结构,保存在线程内核对象中.大约每隔20ms windows就会查看所有当前存在的线程内核对象.并在可调度的线程内核对象中选择一个,将其保存在CONTEXT结构的值载入c ...