如何使用不同的数据库连接进行程序包配置?

时间:2008-09-02 03:26:09

标签: sql-server ssis

我有一个SSIS包,它从SQL Server包配置表中设置一些可变数据。 (选择“直接指定配置设置”选项)

当我使用我在开发包时指定的数据库连接时,这很有效。但是,当我在测试环境中的服务器(64位)上运行它(作为代理作业或直接运行程序包)并且我在Connection管理器中指定新的连接字符串时,程序包仍然从数据库服务器读取设置我在开发中指定的。

所有其他Connections占用正确的连接字符串,它似乎只是从错误的位置读取的包配置。

任何想法或我做错了什么?

9 个答案:

答案 0 :(得分:1)

我能够做到这一点的唯一方法是使用Windows环境变量。您可以在环境变量中指定连接字符串和用户首选项等内容,然后从SSIS任务中选择这些环境变量。

答案 1 :(得分:1)

我更喜欢在SQL客户端配置中使用服务器别名。这样,当您决定将程序包指向另一个SQL Server时,就像编辑别名以指向新服务器一样简单,SSIS包中无需编辑。将程序包移动到实时服务器时,您需要添加别名,并且它可以正常工作。

当您对服务器有一个真正痛苦的命名约定时,这也有帮助,别名可以是比实际机器名更具描述性的名称。

答案 2 :(得分:1)

我实际上并没有完全理解你的问题,但是我将连接设置存储在配置文件中,通常每个环境都有一个,例如dev,production等。这些包在运行时会从配置文件中读取连接设置。

答案 3 :(得分:1)

当您创建作业以调用SSIS包时,如果您正在设置该步骤,则会有一个选项卡区域。默认选项卡是您设置包名称的位置,下一个选项卡是您可以设置配置文件的位置。为每个软件包配置一个配置文件,并为服务器(dev,test,prod)进行更改。配置文件可以直接放在dev,test和prod服务器上,然后在设置该作业时指向它们。

答案 4 :(得分:1)

如果你正在使用SQL Server包配置,那么包的所有属性都将来自SQL Server表 - 请检查

答案 5 :(得分:0)

我们希望将我们的包配置保存在数据库表中,我们知道它与我们的其他数据一起备份,我们知道在哪里可以找到它。只是一个偏好。

我发现要使其工作,我可以使用环境变量配置来设置我正在读取我的包配置的连接管理器的连接字符串。 (虽然我必须重新启动SQL Server代理才能找到新的环境变量。当我将其部署到生产环境时不太理想)

看起来当您将SSIS包作为计划任务中的一个步骤运行时,它按以下顺序运行:

  • 按照Package Configuations Organizer
  • 中显示的顺序加载每个Package Configs
  • 从“计划作业”的“作业步骤”属性中的“数据源”选项卡设置“连接字符串”
  • 开始运行包。

我原本期望前两个是另一种方式,这样我就可以从预定作业中为我的包配置设置数据源。这是我希望其他人在维护包装时寻找它的地方。

答案 6 :(得分:0)

SSIS安全的方式很糟糕。当我不在办公室时,没有人能够支持。作业永远不会从配置文件中读取...我放弃了。它仅在我在“数据源”选项卡中编辑字符串时有效。但是,如果您第二次碰巧上班,密码就会丢失。糟糕的设计,绝对可怕。您可能会认为,当您在作业步骤中指定xml文件时,它将从那里读取已定义的连接字符串,但事实并非如此。这真的适用于其他任何人吗?

答案 7 :(得分:0)

转到包属性并将部署设置为True。这应该适用于您所做的事情。

答案 8 :(得分:0)

我有相同的问题,得到了相同的答案,即您无法编辑用于SQL Server中托管的程序包配置的连接字符串,除非您指定SQL Server连接字符串应该在环境变量中。

遗憾的是,这在我的开发设置中不起作用,其中两个环境托管在同一台机器上。我最后按照SQL Server Central [免费注册和一个好网站]详细介绍了Scott Coleman的方法。诀窍是您创建一个视图以将配置设置存储在一个中央服务器上,然后使用连接到它的机器来确定哪个环境是活动的。

我使用了这种方法,但也使用连接到环境的用户来做出决定,因为我的测试和开发设置在同一个SSIS实例上运行,但是作为不同的用户名。 Scott在评论中建议应该设置应用程序名称,但是这不能在包执行作业步骤中更改,因此它不是一个选项。

我发现的另一个警告是,我必须在视图中添加“而不是”触发器来执行配置变量的插入,更新和删除。