【问题标题】:How to run the same SSIS package multiple times with different configurations如何使用不同的配置多次运行同一个 SSIS 包
【发布时间】:2012-05-14 21:08:38
【问题描述】:

由于这些很棒的"Behavior Changes to Integration Services Features in SQL Server 2008 R2",SQL Server 2008 中有没有办法

1) 以不同的配置多次运行同一个 SSIS 包

2) 同时仍然在 BIDS 的设计时启用配置以进行测试

基本上在 2005 年,我可以创建 SSIS 包,在 BIDS 中启用配置以进行测试,并在测试后将包部署到服务器并使用具有 3 种不同配置的 SQL 代理运行 3 次。

如何在 2008 年做到这一点,否则我必须在部署前禁用 BIDS 中的配置?问题是如果开发人员忘记在 BIDS 中禁用它们,则将始终使用设计时配置而不是指定的配置。

【问题讨论】:

    标签: sql-server-2008 ssis


    【解决方案1】:

    为什么你不能运行包 3 次?

    只需使用 /config 运行 dtexec 并指定配置文件以从中提取值

    或者您可以创建一个包含 3 个步骤的 sql 作业,并在每个步骤上运行相同的包,通知配置选项卡上的不同配置文件。

    我真的没有看到问题。 “包”和“配置文件”是两个不同的东西。在 BIDS 内部,如果你禁用配置并运行包,它当然不会读取任何配置文件,但如果你启用,它会从配置(文件或服务器或其他任何东西)中读取值并使用它们,即使你有包装上设置的不同值。

    那么,为什么开发人员不能启用配置并在配置文件中设置需要的值?

    编辑:

    我想你误会了。从您发布的页面:

    1- 该实用程序首先应用设计时配置。

    • 也就是说,读取配置文件中的配置

    2 - 该实用程序然后应用您指定的运行时选项 启动实用程序时的命令行。

    -这意味着,例如使用 dtexec 上的 /set 选项设置变量值

    3- 最后,实用程序重新加载并重新应用设计时 配置。

    也就是说,重新加载配置文件中的配置

    这就是为什么您在 SQL Server 2008 中的多个地方阅读到,您不能使用 /Set 选项来覆盖同样由配置设置的值。

    这实际上并不意味着你不能,这意味着配置文件中的值将优先于命令行设置的任何值。

    不用担心,BIDS 中设置的值绝不会覆盖您在配置文件中设置的值。

    【讨论】:

    • 是的,如果您在 BIDS 中禁用它们,它将起作用 - 您需要记住这样做的唯一问题。如果您忘记了,SQL 代理作业中指定的配置文件将永远不会覆盖 SSIS 包中的值 - 这是我在 2005 年至 2008 年的问题中提到的行为变化。
    • 我认为我做对了,特别是因为我实际测试了这个:) 让我举例说明一下。我们有包 aaa.dtsx。当您在 BIDS 中打开它时,会启用配置,并且它使用名为 dev.dtsx config 的配置文件来设置连接和一些变量。然后我们将它部署到生产 SQL 服务器并使用 dtexec 运行它 3 次 - 使用 config prod_a.dtconfig,然后是 prod_b,然后是 prod_c - 每次包都将使用不同的连接和设置。虽然它在 2005 年完美运行,但在 2008 年却无法运行——我们的 ssis 包总是从 config dev.dtsx 中选择值。
    • 传递给 dtexec 的配置值不会被设计时配置覆盖的唯一情况,即它们不是由设计时配置设置的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2023-01-23
    • 2023-02-02
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多