SSIS ->> Environment Variables
2016-02-17 19:52
246 查看
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
首先第一点,既然常量/显示赋值(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
相关文章推荐
- 拥抱高效、拥抱 Bugtags 之来自用户的声音(四)
- BestCoder Round #72 (div.2)
- Android运营商名称显示之PLMN的读取(原)
- 简单SQLite的使用
- UIBezierPath个人学习总结
- Mysql“集群”和”主从“两者的区别
- 这些年正Android - 母亲
- 06笨小猴(1.9)
- 初识Unity
- JZOJ 1164.求和
- 多线程访问共享对象和数据的方式
- Android 的性能工具用法 I-渲染分析工具
- Java synchronized
- 没有 Linux 和开源软件的世界会变得怎么样
- iOS指定页面屏幕旋转,手动旋转
- WampServer2.1e-x32
- 海啸的数学模型(也是微分方程组)【作者:泰瑞陶】
- Android SQLiteDatabase类中insert方法所调用的insertWithOnConflict方法的实现
- POJ 3169 Layout (图论-差分约束)
- GPS模块AD采样来判断天线开短路