2011-03-04 121 views
3

我一直在寻找SSIS的几个部署策略,并想知道哪一个最容易维护。我一直倾向于使用SQL Server配置来存放连接字符串,然后在从开发服务器导入包以更改连接字符串之后运行proc。不过,我有75个软件包,这看起来有些乏味。任何人都可以提出一个好的部署策SSIS部署策略

我有一个Dev,Stage和几台要部署到的活动服务器。

+0

不能在此可以通过dtutil实现和DTEXEC? – OK999 2017-01-09 18:15:44

回答

2

我们对我的团队构建的大多数软件包都使用SQL配置。我们为解决迁移问题所做的工作是添加第二个基于环境变量的配置,该环境变量告诉包要使用哪个配置数据库。对于每个人来说,这可能都不是一个好的选择,但它对我们的设置来说效果很好

详情:

  • 我们的包总是从代理作业运行。
  • 我们的每一个环境是一个单独的机器上(我们不使用命名实例除了沙盒。)
  • 我们有我们的配置数据库的副本,每台机器的默认SQL实例,并使用相同的分贝名称和架构在每个环境中。
  • 该程序包查看机器名称环境变量以确定哪台机器正在执行程序包。
  • 然后,程序包将在执行机器上查找配置数据库,以获取要完成实际工作的连接字符串。

当我们构建一个新的包时,我们必须将SQL配置迁移到每个环境并根据需要进行调整。但是从那时起,只要我们改变软件包使用哪个连接或哪个服务器正在执行它,我们只需要担心它们。

这样做的包总是知道哪个服务器正在执行它,并始终使用与该服务器相关的配置。因此,单个软件包的持续维护和部署通常很简单。我们通常不得不担心移动是软件包本身以及与更新相关的任何基础模式更改。

+0

我们也这样做,并倾向于编写用于将数据输入到SSISConfig表中的脚本,以便它们将根据运行脚本的服务器自动更改值。 – HLGEM 2011-03-24 18:45:27

0

我一般发现在包含所有必需的数据库连接的XML文件中有一个Package Configuration更容易。在将软件包部署到每个环境时(这可以作为部署清单安装的一部分发生),将根据需要进行修改。你的每个包都可以共享相同的配置文件,这使得它的管理非常简单。

+0

你有没有找到这个策略的好教程? – William 2011-03-04 14:14:16

+0

这更多的来自个人经验,但我有一个快速的样子,发现这篇文章可能有用。 http://vyaskn.tripod.com/sql_server_2005_making_ssis_packages_portable.htm – grapefruitmoon 2011-03-04 14:22:06

0

我们在每台机器上都有一个指向目录的环境变量。在那个目录中我们有一个SSIS配置文件。配置文件有一个条目 - 它配置在我们所有软件包中找到的连接管理器的连接字符串属性 - 称为SSIS_CONFIG。该连接字符串指向具有该环境的配置表的数据库。

配置表具有连接管理器的配置以及各种其他配置。连接管理器行的ConfigurationFilter设置为数据库名称,ConfiguredValue具有该数据库的连接字符串。

每个软件包都有SSIS_CONFIG连接管理器。所有其他连接管理器都被命名为它们连接的数据库的名称(而不是服务器和数据库的SSIS默认命名)。

SSIS_CONFIG连接管理器由程序包配置配置,配置类型为间接XML,配置位置存储在环境变量中。每个其他连接管理器都使用配置类型SQL Server,连接SSIS_CONFIG和它们连接的数据库名称的配置过滤器。

如果一个新软件包需要连接到一个数据库,那么另一个软件包也不得不这样做,所以该连接管理器所需的配置已经在配置表中,所以我们在构建包的包装配置。

每个环境都有环境变量以及它自己的数据库和配置表版本。配置表中环境之间的唯一区别是ConfiguredValue列中的连接字符串。例如,DEV环境中的连接字符串指向数据库的DEV版本,并且QA环境条目指向数据库的QA版本。

在环境之间提升它们时,编辑软件包会使测试无效。这种方法使我们可以在不触及它们的情况下升级包该设计也非常灵活,使开发和测试变得更容易。

我们可以使用使用此作为一个准则在同一台机器上运行多个实例这种方法: http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/69739/