运行具有2种不同配置的SSIS包

时间:2012-04-16 15:59:32

标签: sql-server-2008 ssis

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

我建议你不要在SSIS配置中存储@ExportType。您可以通过添加类似于:

的SET开关来覆盖DTEXEC命令行中的值

/ SET“\ Package.Variables [ExportType] .Properties [Value]”; Schedule

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

希望这有帮助, 安迪

答案 1 :(得分:2)

你不能这样做。 SSIS不会阅读新配置。

您需要两次调用包,一次使用配置文件A,一次使用配置文件B.在每个配置文件中,您将@ExportType变量设置为'schedule'和'unchedule'。

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

答案 2 :(得分:2)

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

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

New package

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

Connection manager

  • 在SQL数据库中,创建了一个名为dbo.ExportData的表,其中包含以下结构。 Id列是标识列。

Table structure

  • 该表格不包含任何数据。执行包时,该表将填充数据。

No data to begin with

  • 在SSIS包上,点击SSIS菜单 - >选中Package Configuration选项。在“程序包配置管理器”对话框中,选中启用程序包配置复选框,然后单击添加按钮。创建了类型为XML Configuration file的新包配置。选择了存储文件的路径。

Package type

  • 将变量ExportType属性和连接管理器SQLServer ConnectionString 属性添加到配置文件中。

Values added to file

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

Execute SQL Task General

  • 将两个参数配置为包上可用的相应变量。现在该软件包已准备好部署。

Parameter mapping

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

SQL job

  • 在SQL作业的“步骤”页面上,创建了两个名为Step_01Step_02的步骤。

SQL Job steps

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

Step 1 Package

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

ScheduleConfig

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

Step 1 config

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

Step 2 Package

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

UnscheduleConfig

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

Step 2 Config

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

Job executed

  • 查询表格ExportData。您可以注意到该包已执行两次,并且SQL代理作业的每个执行步骤都使用了步骤中指定的相应配置文件。

Data verified.

希望有所帮助。