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

最新文章

  1. 实现ABP中Person类的权限功能
  2. 从零开始学Python06作业思路:学生选课系统
  3. String、StringBuilder 与 StringBuffer
  4. Object C学习笔记26-文件管理(二)
  5. 圆角边框_css控制形状
  6. 【HTML】Advanced7:Embedded Content: Video, Audio, and Canvas
  7. 武汉科技大学ACM:1008: 零起点学算法64——回型矩阵
  8. TodoList开发笔记 – Part Ⅲ
  9. Redis客户端API操作 Jedis详解
  10. Scala 令人着迷的类设计
  11. Caused by:java.sql.SQLException:ORA-00923
  12. jquery validate 动态增加删除验证规则
  13. CentOS_7下安装Nginx服务
  14. vue学习(二)
  15. SoapUI之http接口测试
  16. Python 锁 同步 互斥锁
  17. BZOJ3531 树剖 + 动态开点线段树
  18. CentOS安装Navicat
  19. quartz 配置
  20. Java连接S3并上传Redis

热门文章

  1. linux 搭建gitlab server
  2. 转 zabbix 用户建立和中文化
  3. vue-quill-editor html编辑器
  4. CSS禁止滚动条
  5. 关于table-layout的用法
  6. FocusBI: 商业智能场景(原创)
  7. list-iscroll5.2
  8. FZU 2138——久违的月赛之一——————【贪心】
  9. WEB项目构建优化之自动清除CSS中的图片缓存
  10. [转]微信小程序联盟 跳坑《一百八十一》设置API:wx.openSetting使用说明