SQL Server Integration Services(SSIS) 在2012版本引入了Environment Variables这个新特性。它允许我们为一个环境创建出一套变量用于为项目内的包在执行时进行参数赋值,比如我们可以为PROD环境,SIT环境,UAT环境和DEV环境创建出不同的变量。这点对于像connection string这样的东西是很有用处的。看似是个不错的功能,其实仔细研究下来还是觉得有些失望。

首先第一点,既然常量/显示赋值(literal value)也是可以做到的事情,那你Environment Variables的优势在哪?

关于这点,首先我想它的优势必须在某些条件下才可以体现出来,比如一台服务器承担了多重角色,比如既是SIT环境又是DEV环境。这个时候用环境变量来切换省时省力。其次,我觉得它的另一个优势只有在大型项目下才可以体现出来,比如说DW项目拥有许多台服务器,有些服务器可能会根据需要承担起不同环境下的服务器角色,比如有时作为SIT服务器,有时作为DEV服务器,这个时候用Environment Variables切换也是比较省时省力。

但是它的劣势也很致命,那就如果你用Agent Job或者调用存储过程来运行SSIS包的话,你会发现即便你在项目级别明明已经配置了Environment Variables,可是你在用Agent Job执行包或者调用存储过程来运行包的时候它还是要求你去指明Environment或者显示赋值项目参数。如果是用存储过程还好,我们至少可以指定reference_id这个参数来告诉SSIS用哪个Environment,但是Agent Job就惨了,难不成我要每次都改Agent Job配置。这样不是让人很奔溃吗?我就不明白,我明明都在项目级别配置了某个Environment,你还要我在执行包的时候再指定一次,为什么你不能聪明点呢?这点其实是说得通的啊,就像默认选项的道理。

那话说回来,我觉得小型的项目或者说不同环境(DEV/PROD/SIT)拥有不同的服务器,那么还不如用常量。起码用常量的话我们不必每次都去改。SSIS至少每次是知道这些值是默认值。

参考:

Create and Map a Server Environment

Parameterizing Connections and Values at Runtime Using SSIS Environment Variables

SSIS ->> Environment Variables的更多相关文章

  1. CVE: 2014-6271、CVE: 2014-7169 Bash Specially-crafted Environment Variables Code Injection Vulnerability Analysis

    目录 . 漏洞的起因 . 漏洞原理分析 . 漏洞的影响范围 . 漏洞的利用场景 . 漏洞的POC.测试方法 . 漏洞的修复Patch情况 . 如何避免此类漏洞继续出现 1. 漏洞的起因 为了理解这个漏 ...

  2. Debian Environment Variables

    原文:EnvironmentVariables General Environment variables are named strings available to all application ...

  3. How to keep Environment Variables when Using SUDO

    The trick is to add environment variables to sudoers file via sudo visudo command and add these line ...

  4. Environment Variables

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx Every process has an ...

  5. [Whole Web, Nods.js, PM2] Passing environment variables to node.js using pm2

    learn how to pass environment variables to your node.js app using the pm2 config file. This is usefu ...

  6. List environment variables from Command Prompt

    Request: List the environment variables from Command Promt To list one varibales , the syntax is lik ...

  7. [NPM] Execute npx commands with $npm_ Environment Variables

    We will incorporate npm specific environment variables when executing various npx commands. In our e ...

  8. How to set JAVA environment variables in Linux or CentOS

    How to set JAVA environment variables JAVA_HOME and PATH in Linux After installing new java (jdk or ...

  9. svn: None of the environment variables SVN_EDITOR...问题解决

    转:http://blog.163.com/lgh_2002/blog/static/44017526201046111856208/ 问题1: svn: Could not use external ...

随机推荐

  1. SVM面经

    原始问题与对偶问题的关系 1,目标函数对原始问题是极大化,对对偶问题则是极小化 2,原始问题目标函数中的收益系数(优化函数中变量前面的系数)是对偶问题约束不等式中的右端常数,而原始问题约束不等式中的右 ...

  2. Mac系统下Eclipse代码联想功能(代码助手,代码提示)快捷键

    Eclipse for mac 代码提示(代码助手,代码联想)快捷键修改一.每次输入都自动提示点击Eclipse,使其成为第一响应者,preferences->Java->Editor-& ...

  3. oracle 层次化查询(生成菜单树等)

    1.简介:Oracle层次化查询是Oracle特有的功能实现,主要用于返回一个数据集,这个数据集存在树的关系(数据集中存在一个Pid记录着当前数据集某一条记录的Id). 2.层次化查询主要包含两个子句 ...

  4. 关于require js加载的时候报错的问题

    1.在项目中使用了requery.js  页面总是会出项一些奇怪的错误,如下 后来经过查找资料才发现,原来是因为依赖 的问题,因为require加载的时候是异步加载,而js之间是有相互依赖的,所以解决 ...

  5. 关于sql通配符检索问题-【.NET】

    确定给定的字符串是否与指定的模式匹配.模式可以包含常规字符和通配符字符.模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配.然而,可使用字符串的任意片段匹配通配符.与使用 = 和 != 字符串比 ...

  6. unity调用ios原生代码objective-c和回调

    从c#到objective-c学习 https://www.runoob.com/w3cnote/objective-c-tutorial.html https://www.jianshu.com/p ...

  7. 【LESS系列】一些常用的Mixins

    在我们平时的开发中,对于一些使用频率很高的方法函数,我们一般都会将其归纳到一起,整理出一个核心库来. 其实这个思想,借助 LESS 也可以在 CSS 中得以实现. 下面是几个在 W3CPLUS 中偷过 ...

  8. C#控件随窗体大小改变而改变

    几种方法:1.点击控件,属性,里面有一个Dock,选择Fill,就会变得和它的父容器一样大.而且会随之变化.2.点击控件,属性,里面有一个Anchor,选择Top,Right,Bottom,Left. ...

  9. python 网络编程——客户端

    网络通信的基本接口是socket,它扩展了操作系统的基本I/O到网络网络通信.socket可以通过socket()函数来建立,通过connect()函数来连接.得到了socket,可以确定本地和远程端 ...

  10. angular-ui-router动态加载模块

    1.定义index.html主页,对于通用的js就不用require依赖加载了,其中main.js作为主模块,用require添加系统路由模块. <!DOCTYPE html> <h ...