【发布时间】:2013-06-20 19:12:59
【问题描述】:
我们有三个环境 - 生产、暂存和测试。每个环境都有多个数据库用于我们的内部后台系统(即时间收集、会计、人力资源等)。
对于我们的员工福利,我们会创建文件馈送,这些文件会发送给我们的福利提供者以处理注册/终止。在 SSIS 2012 之前,我们有一组用于集中配置的自定义 SSIS 组件 - 因此,根据我们部署包的位置,它会自动选择正确的连接字符串。
现在我们的旧方法奏效了,但它有其自身的困难(即,新开发人员经常忘记正确设置包并花时间试图弄清楚),所以我们希望继续使用 SSIS 2012 和项目部署模型。
我真的很喜欢环境配置的概念,但简单地为 prod/stage/test 创建 3 个环境似乎不是一个好主意。我们的许多软件包都有自定义 SFTP 凭据、网络上各个区域的文件路径等 - 因此这些环境会随着对我们大多数软件包并不重要的东西快速增长。
有没有办法让一个环境配置从另一个环境配置中提取数据?像这样的东西将允许我创建一个具有公共数据库服务器的生产环境配置,然后在生产配置中为我们的一个好处文件提要包继承它。福利文件提要包 prod config 将具有所有其他非常具体的变量。
【问题讨论】:
-
我认为您无法使用 SSIS 目录中提供的默认选项做您想做的事。然而,通过 T-SQL 修改 SSISDB 非常容易。但是,如果您真的想通过编写自定义内容来解决问题,则取决于您希望使用多少参数。我认为只创建 3 个不同的环境没有任何问题。
-
@JodyT - 我们的目标是没有 3 个环境配置,每个环境配置都有超过 50 个变量来处理我们所有不同包的需求。我们的生产环境有许多系统来支持我们的公司,因此我们更愿意专注于 SSIS 环境配置。但它看起来不像 SSIS 2012 很好地支持这一点。没什么大不了的。
-
一旦你的包中有多个变量,在 SQL 中处理它们可能会很痛苦,所以在这种情况下,我使用的一种策略是让一个变量指向一个像配置这样的位置包含所有属性的文件或视图,ssis 包在其初始化过程中读取这些属性。然后在不同的环境中,您只需管理一个参数(无论如何,在 SQL Server 内部)。
-
@meataxe 这几乎就是我们之前所做的,尽管我们将配置存储在数据库中而不是配置文件中。我唯一不喜欢的是它确实需要 SSIS 包包含一些数据流/逻辑来提取此信息,并适当地设置其连接/变量。我宁愿让 SSIS 包逻辑完全专注于它所拥有的任何业务需求,而将配置排除在外。 SSIS 确实在进步.. 只是.. 非常.. 很慢 :) 但至少 VS 2012 最终支持 BIDS 项目。
标签: sql-server ssis ssis-2012