-1

我在 Server2(2008,64 位)上有一个 SSIS 包,我正在尝试使用 xp_cmdshell 命令从 server1(2005,32 位)调用它,

exec xp_cmdshell 'dtexec /FILE "\\Wdvwd99a0234\PWOSSIS\RTS_SSIS\RTS_ETL.BE_2_DUNSMasterPackage.dtsx"'

它不断给出错误:

Microsoft (R) SQL Server 执行包实用程序版本 9.00.5000.00,适用于 32 位版权所有 (C) Microsoft Corp 1984-2005。版权所有。NULL 开始:下午 1:00:42 错误:2012-11-29 13:00:42.83
代码:0xC001700A 来源:描述:包中的版本号无效。版本号不能大于当前版本号。结束错误错误:2012-11-29 13:00:42.83
代码:0xC0016020 来源:说明:包从版本 3 迁移到版本 2 失败,错误为 0xC001700A“包中的版本号无效。版本号不能大于当前版本号。”。结束错误错误:2012-11-29 13:00:42.83 代码:0xC0010018 来源:描述:从节点“DTS:Property”加载值“3”时出错。结束错误 由于错误 0xC0010014,无法加载包“\Wdvwd99a0234\PWOSSIS\RTS_SSIS\RTS_ETL.BE_2_DUNSMasterPackage.dtsx”。描述:由于错误 0xC0010014 “发生了一个或多个错误。在此错误之前应该有更具体的错误来解释错误的详细信息。此消息用作遇到错误的函数的返回值。 ”。当 CPackage::LoadFromXML 失败时会发生这种情况。来源:开始:下午 1:00:42 结束:下午 1:00:42 经过:0.078 秒 NULL

4

2 回答 2

3

正如其他人评论的那样, dtexec.exe 的版本需要与目标包的版本匹配。你的选择是

  • 在 Server1 上安装 2008 Integration Services 组件。您需要提供 dtexec 的显式路径以确保 xp_cmdshell 运行 2008 版本。
  • 在远程(Server2)机器上运行包。最低的进入门槛是在 Server2 上创建一个 SQL 代理作业(未计划),它只是运行包RTS_ETL.BE_2_DUNSMasterPackage.dtsx然后您将启动该作业以代替当前的 xp_cmdshell。EXECUTE msdb.dbo.sp_start_job 'RTS_ETL.BE_2_DUNSMasterPackage'这种方法的两个注意事项
    1. 您的机器可以支持尽可能多的并发 dtexec 调用。一个特定的 SQL 代理作业不能多次运行。
    2. 如果您提供动态运行时选项,那也不适用于代理作业。
于 2012-11-29T21:16:11.827 回答
2

无法使用 2005 包实用程序运行 2008 包。

于 2012-11-29T20:07:53.110 回答