2

我们有一个名为 ExportData 的 SSIS 作业,它接受“ExportType”参数。ExportType 参数可以是“schedule”或“unschedule”。

我创建了名为“@ExportType”的变量并创建了 SSIS 配置并在配置文件中公开了该变量并将其命名为“ScheduleConfig”。我复制了该文件并将值更改为“unschedule”并将其命名为“UnscheduleConfig”。

我在 SQL Server 2008 中创建了 SSIS 作业,并为“计划”和“取消计划”设置了 2 个步骤。我为每个步骤附加了正确的配置文件。但无论我运行哪一步,它总是执行“计划”。我确定并仔细检查了配置文件和步骤。

如何使用 2 个不同的配置文件运行 2 个不同的作业?

我确实尝试过使用 SetValues 方法,但它也不起作用。

4

3 回答 3

3

我建议您不要将 @ExportType 存储在 SSIS 配置中。您可以通过添加类似于以下内容的 SET 开关来覆盖 DTEXEC 命令行中的值:

/SET "\Package.Variables[ExportType].Properties[Value]";计划

您可以使用上述相同的 PackagePath 在“设置值”选项卡上的“SQL 代理集成服务作业步骤类型”中覆盖此变量值。

希望这会有所帮助,安迪

于 2012-04-17T18:45:03.573 回答
2

你不能那样做。SSIS 不会读取新配置。

您需要调用该程序包两次,一次使用配置文件 A,一次使用配置文件 B。在每个配置文件上,您会将 @ExportType 变量设置为“schedule”和“unschedule”。

您只能设置一次参数。即使您将 DTEXEC 与 /Config 选项一起使用,例如,您也不能覆盖已设置的参数

于 2012-04-16T16:05:12.943 回答
2

如果我正确理解您的要求。这是一个在其中创建的示例包SSIS 2008 R2,可以满足您的需求。该示例使用单个包,该包在两个不同的 SQL 代理作业步骤下执行,并且这两个步骤都使用同一配置文件的不同副本。配置文件为包内使用的变量保存不同的值。

  • 创建了一个名为SO_10177578. 在包中,创建了一个名为ExportTypedata type的包变量String。此外,将 放置Execute SQL Task在“控制流”选项卡上。此任务将有助于识别传递给变量的值ExportType

新包装

  • 将 OLE DB 连接添加到示例数据库并将连接命名为SQLServer. 我选择为此连接管理器使用 SQL Server 身份验证。

连接管理器

  • 在 SQL 数据库中,创建了一个dbo.ExportData具有以下结构的表。Idcolumn 是一个标识列。

表结构

  • 该表不包含任何开始的数据。该表将在执行包时填充数据。

没有数据开始

  • 在 SSIS 包上,单击SSIS菜单 --> 选定Package Configuration选项。在 Package Configurations Organizer 对话框中,选中Enable package configuration复选框并单击Add按钮。创建了一个新的包配置类型XML Configuration file。选择了存储文件的路径。

包装类型

  • 将变量的ValueExportType属性和连接管理器的ConnectionStringSQLServer属性添加到配置文件中。

添加到文件中的值

  • 在执行 SQL 任务上,选择要连接的连接并将SQLStatement属性SQLServer设置为INSERT INTO dbo.ExportData (PackageName, ExportTypeValue) VALUES (?, ?)

执行 SQL 任务一般

  • 将这两个参数配置为包上可用的适当变量。现在包已准备好部署。

参数映射

  • 在数据库服务器的 SQL 代理节点上,创建了一个名为Test_ExportData. Owner字段信息被删除以隐藏敏感信息。

SQL 作业

  • 在 SQL 作业的步骤页面上,创建了两个名为Step_01和的步骤Step_02

SQL 作业步骤

  • 步骤 1 配置如下,包存储在路径中c:\temp\SO_10177578.dtsx

第 1 步包

  • 复制使用包创建的包配置文件并将变量的值更改ExportTypeSchedule。将配置文件命名为ScheduleConfig.dtsConfig. 屏幕截图仅显示部分配置文件以隐藏敏感的连接字符串信息。

调度配置

  • 在作业的第 1 步中,从路径中引用了新创建的包配置文件c:\temp\Test\ScheduleConfig.dtsConfig.

第 1 步配置

  • 步骤 2 配置如下,它使用与c:\temp\SO_10177578.dtsx步骤 1 相同的路径中存储的包。

第 2 步包

  • 复制使用包创建的包配置文件并将变量的值更改ExportTypeUnschedule。将配置文件命名为UnscheduleConfig.dtsConfig. 屏幕截图仅显示部分配置文件以隐藏敏感的连接字符串信息。

取消调度配置

  • 在作业的第 2 步中,从路径中引用了新创建的包配置文件c:\temp\Test\UnscheduleConfig.dtsConfig.

步骤 2 配置

  • 现在,这两个步骤都已配置。执行了新的 SQL 代理作业。

已执行的作业

  • 查询表ExportData。您会注意到该包被执行了两次,并且 SQL 代理作业的步骤中的每次执行都使用了步骤中指定的适当配置文件。

数据验证。

希望有帮助。

于 2012-04-16T17:45:43.637 回答