在SSIS的间接环境变量中创建连接字符串

时间:2011-12-06 19:16:10

标签: variables configuration ssis

我一直在网上搜索这个问题的明确答案,但我找不到。

我们目前在包中启用了SQL配置,这些包将所有内容存储在数据库中(dev或prod)。执行包,确定包映射到哪个配置以及在测试期间必须更改它们是一个棘手的过程。我希望我们可以使用环境变量来始终使用特定的连接字符串来处理我们想要根据机器使用的特定sql server配置。

我已经看到了设置变量的方法,其中连接字符串被硬编码为环境变量,并在管理之后添加了额外的SQL服务器配置。我还看到了使用XML操作连接字符串并从变量或包本身调用它的方法。

这两种解决方案都很有效,可能是可行的解决方案。 我真正想回答的问题是:是否可以通过环境变量开发整个SQL Server配置连接?与将连接字符串与配置字符串组合在一起,以便一个环境变量直接连接到包配置?有没人试过这个?作为问题的解决方案是否有意义?

1 个答案:

答案 0 :(得分:1)

是的,我们已经做到了这一点并且运行正常。每个包都有两个配置:第一个是环境变量,第二个是SQL Server表。环境变量是包含具有所有配置的表的数据库的连接字符串,并且它应用于连接管理器。 SQL Server配置使用该连接管理器连接到配置数据库并检索各个设置。

由于按顺序应用配置,因此在SQL Server配置尝试使用连接管理器之前设置连接管理器的连接字符串。总结:

  1. 创建您的包
  2. 添加名为“配置数据库”的连接管理器或其他
  3. 将SQL Server配置添加到包中,使用“配置数据库”作为连接,并选择要存储在表中的设置
  4. 创建一个环境变量,例如SSIS_PKG_CONF,其中包含用于“配置数据库”连接管理器的连接字符串
  5. 将环境变量配置添加到包中,使用SSIS_PKG_CONF变量,并将其分配给“配置数据库”连接管理器的连接字符串
  6. 现在,当您运行包时,配置如下:

    1. 包处理环境变量配置
    2. 它将环境变量的值分配给“配置数据库”连接管理器的连接字符串
    3. 包处理SQL Server配置
    4. 它使用“配置数据库”连接管理器从数据库表中检索单个设置
    5. 这对我们来说效果很好,因为我们可以将连接字符串更改为指向配置的不同源数据库,而不更改包或启动程序内的任何内容(即运行包的SQL代理作业或脚本)。还有其他方法可以做到这一点,有些人强烈认为.dtsConfig文件是更好的选择,但我们发现管理环境变量比配置文件更容易

      但最终管理包配置是一种偏好,很大程度上取决于您已经拥有的工具和实践在您的环境中更容易。