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. [总]Android高级进阶之路

    个人Android高级进阶之路,目前按照这个目录执行,执行完毕再做扩展!!!!! 一.View的绘制 1)setContentView()的源码分析 2)SnackBar的源码分析 3)利用decor ...

  2. java多线程-cas及atomic

    大纲: cas atomic 一.cas cas:compareAndSwap,一种乐观锁. cas思想:cas需要三个值,v是内存值,e是期望值,n是要修改的值.当内存中的值v等于预期值e(说明内存 ...

  3. LCA(最近公共祖先)

    学习链接:https://baike.baidu.com/item/%E4%BC%B8%E5%B1%95%E6%A0%91/7003945?fr=aladdin 求LCA的方法有很多,在这里就只介绍一 ...

  4. dgango 报错: Timeout when reading response headers from daemon process

    问题: image = np.asarray(bytearray(f.read()), dtype="uint8")cv2_img = cv2.imdecode(image, cv ...

  5. LinuxShell脚本编程基础4-条件测试与条件判断

    1.条件测试(test,[]) #! /bin/bash echo "请输入登陆的用户名:" read name1 if test "$name1" = &qu ...

  6. Eclipse取消或者关闭tomcat所有自动发布(部署)方法

    1.设置publishing为Never publish automaticallu 2.modules->edit->auto reloading enabled 3.Windows & ...

  7. loadView 与 viewDidLoad 和 didReceiveMemoryWarning与viewDidUnload 详解

    首先试验下:viewController初始化 分两个支路:initWithNibName加载初始化 及 init 直接初始化: <1>调用initWithNibName加载一个xib界面 ...

  8. 【C语言】-指针

    本文目录 直接引用 一.什么是指针? 二.指针的定义 三.指针的初始化 四.指针运算符 五.指针的用途举例 六.关于指针的疑问 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发 ...

  9. zato——Channels Outgoing connections

    Channels,服务获得请求.方式 AMQP JMS WebSphere MQ plain HTTP SOAP ZeroMQ 其中,只有HTTP是同步的 Plain HTTP和SOAP暴漏服务直接通 ...

  10. 使用 Qt 获取 UDP 数据并显示成图片

    一个项目,要接收 UDP 数据包,解析并获取其中的数据,主要根据解析出来的行号和序号将数据拼接起来,然后将拼接起来的数据(最重要的数据是 R.G.B 三个通道的像素值)显示在窗口中.考虑到每秒钟要接收 ...