SSIS 2012 - 项目包环境连接配置的最佳模式

SSIS 2012 - Best pattern for project-package-environment connection configuration

在 SSIS 2012 项目(将部署到服务器)中配置连接的 'best practices' 方法是什么?文档和 Google 显示了实现此目的的多种方法,但哪种方法充分利用了 2012 project/deployment 模型并且易于定制、可维护等?

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

要配置连接,我有以下选项

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

(此外,我更喜欢允许我们单独指定项目的解决方案,例如 InitialCatalog 和 Server,但这不是必需的。虽然连接管理器允许您修改 InitialCatalog 和 Server 属性,但这似乎不是实际修改 ConnectionString。)

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

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

我也喜欢在 SSISDB 中创建一个空文件夹,将其命名为 Configs,然后在那里建立我的 SSIS 环境变量。然后所有项目都引用该文件夹的变量。在我的客户那里,通常情况下他们都引用同一个销售数据库,因此我似乎需要做更多的工作来维护 N 个配置以满足 N 个项目,而不是拥有一个共享的配置存储库。

编写一切脚本。在创建和分配配置时单击滚动图标。当您需要从一个环境迁移到另一个环境时,这将使它变得更容易。