SSIS 部署策略

3

我一直在研究几种SSIS部署策略,想知道哪种策略最容易维护。我倾向于使用SQL Server配置存储连接字符串,然后在从开发服务器导入包后运行一个存储过程来更改连接字符串。但是,我有75个包,这似乎有点繁琐。有人能建议一个好的部署策略吗?

我有一个开发、预发布和几个生产服务器需要部署。


这个不能通过dtutil和dtexec实现吗? - OK999
3个回答

2
我们的团队大多使用SQL配置来构建软件包。为了解决迁移问题,我们添加了第二个配置项,基于环境变量告诉软件包使用哪个数据库配置。这种方法可能不适用于所有人,但对我们的设置效果很好。
细节如下:
- 我们的软件包总是从代理作业中运行。 - 我们的每个环境都在单独的机器上(除了沙盒环境,我们不使用命名实例)。 - 我们在每台机器的默认SQL实例中拥有一个配置数据库副本,并且在每个环境中使用相同的数据库名称和架构。 - 软件包查看机器名称环境变量以确定执行软件包的机器。 - 然后,软件包会查找正在执行的机器上的配置数据库,以获取要执行的实际工作的连接字符串。
当我们构建新软件包时,我们必须将SQL配置迁移到每个环境并根据需要进行调整。但从那时起,我们只需要关注它们是否更改了软件包使用的连接或执行它的服务器。通过这种方式,软件包始终知道哪个服务器在执行它,并始终使用与该服务器相关联的配置。因此,个别软件包的持续维护和部署通常很简单。我们通常只需要考虑移动软件包本身和与更新相关的任何底层架构更改。

我们也这样做,倾向于编写脚本以将数据输入到SSISConfig表中,以便根据脚本运行的服务器自动更改值。 - HLGEM

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

这更多是基于个人经验,但我快速查看了一下,并找到了这篇文章,可能会有所帮助。http://vyaskn.tripod.com/sql_server_2005_making_ssis_packages_portable.htm - grapefruitmoon

0
每台机器上都有一个环境变量指向一个目录,在该目录中我们有一个SSIS配置文件。该配置文件只有一个条目,它配置了所有包中的连接管理器的连接字符串属性,称为SSIS_CONFIG。此连接字符串指向具有该环境的配置表的数据库。
配置表具有连接管理器的配置以及各种其他配置。连接管理器行的ConfigurationFilter设置为数据库名称,ConfiguredValue具有该数据库的连接字符串。
每个包都有SSIS_CONFIG连接管理器。所有其他连接管理器的名称都是它们连接的数据库的名称(而不是服务器和数据库的默认命名方式)。
SSIS_CONFIG连接管理器由包配置配置,配置类型为间接XML,其中配置位置存储在环境变量中。每个其他连接管理器使用SQL Server配置类型,连接SSIS_CONFIG,并使用它们连接的数据库名称作为配置过滤器。
如果新包需要连接到数据库,则很可能另一个包也必须连接到该数据库,因此我们在构建该包的包配置时重用该连接管理器所需的配置值。
每个环境都有自己的环境变量和数据库及配置表的版本。在不同环境下,配置表唯一的区别就是ConfiguredValue列中的连接字符串。例如,在DEV环境中,连接字符串指向DEV版本的数据库,而在QA环境中,连接字符串则指向QA版本的数据库。
在推广不同环境之间的包时编辑它们会使测试失效。这种方法允许我们在不修改包的情况下推广它们。此设计也非常灵活,使开发和测试更加容易。
我们可以使用以下指南在同一台机器上运行多个实例来采用这种方法: http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/69739/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接