2015-01-08 35 views
3

在SSIS 2012项目中配置连接(将部署到服务器)的“最佳实践”方式是什么?文档和谷歌显示了多种方式来实现这一点,但哪种方式充分利用了2012年项目/部署模型,并且易于定制,可维护等?SSIS 2012 - 项目包环境连接配置的最佳模式

考虑一个包含三个包的项目(NorthwindETL),每个包引用localhost.Northwind。在SSIS服务器上,有一个项目'NorthwindETL'和一个环境'Dev'。

要配置的连接,我有以下选择

  1. IN BIDS:硬代码(通过连接管理器)的连接中的每个包手动。 IN SSIS:在连接管理器选项卡下,配置SSISDB'NorthwindETL'项目,修改Northwind连接字符串,每个包一次。
  2. IN BIDS:使用连接管理器'Parameterize ...'选项,创建一个项目(或包)参数来指定连接字符串(Northwind_Conn)。 IN SSIS:配置SSISDB'NorthwindETL'项目,指定Northwind_Conn参数值。
  3. IN BIDS:创建项目级连接管理器(Project_Northwind_Conn)。 IN SSIS:配置配置SSISDB'NorthwindETL'项目,在连接管理器选项卡下,修改'Project_Northwind_Conn'连接字符串。
  4. IN SSIS:在SSISDB上创建一个名为'DEV'的环境。在'Dev'环境属性中,在变量下创建一个变量'Env_Northwind_Conn'。配置NorthwindETL项目,设置“Northwind_Conn”的环境变量“Env_Nothwind_Conn”

(另外,我宁愿一个解决方案,使我们能够分别指定项目,如InitialCatalog和服务器,但是这是没有必要的。虽然连接管理器允许您修改InitialCatalog和Server属性,但似乎并未修改ConnectionString。)

回答

3

对于要在所有软件包(通常是数据库连接)中使用的连接管理器,2012版本为我们提供了项目连接管理器(选项3)。我发现对于连接管理者来说最令人愉快的就是当我去应用配置时,我在项目级应用一次而不是每个包一次。

除非您从同一个专用服务器上运行您的dev/test/prod ETL,否则我不会像这样命名我的SSIS环境变量。主要原因是我的部署脚本必须具有内置的智能,不仅可以切换每层的服务器名称,还可以改变环境名称。只是让更多的机会让愚蠢的人进入。

我也是在SSISDB中创建一个空文件夹的粉丝,称它为Configs,然后在那里建立我的SSIS环境变量。所有项目然后引用该文件夹的变量。在我的客户中,通常情况下,他们都引用相同的Sales数据库,因此对于我来说,维护N个配置以满足N个项目而不是具有单个共享配置存储库似乎有更多工作要做。

脚本的一切。在创建并分配您的配置时单击滚动图标。当你需要从一个环境迁移到另一个环境时,它会使它变得更加容易。

+0

如果您不介意说明第三段,那么您是在谈论文件系统文件夹(用于配置文件)还是SSISDB文件夹?如果是后者,你使用实际的环境变量,还是使用项目变量? –

+0

SSISDB为我所有的答案。我提到的环境变量是基于SSISDB的环境变量,而不是Windows环境变量。那里的团队不幸地选择了术语。对于连接管理器,我不再采用创建包参数的方法,然后使用它们上的表达式来使我的包能够跨环境移植。相反,该目录允许您直接配置这些属性。 – billinkc