使用xp_cmdshell执行包的版本号错误

时间:2012-11-29 20:01:19

标签: sql-server ssis

我在Server2上有一个SSIS包(2008,64位),我试图使用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 PM错误: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来源:说明:错误   从节点加载值“3”   “DTS:属性”。结束错误无法加载包   “\ Wdvwd99a0234 \ PWOSSIS \ RTS_SSIS \ RTS_ETL.BE_2_DUNSMasterPackage.dtsx”   因为错误0xC0010014。说明:程序包无法加载   由于错误0xC0010014“发生了一个或多个错误。应该有   在此之前的更具体的错误解释了细节   错误。此消息用作函数的返回值   遇到错误。“。当CPackage :: LoadFromXML失败时会发生这种情况。   来源:已开始:1:00:42 PM完成时间:1:00:42 PM经过:0.078   秒NULL

2 个答案:

答案 0 :(得分:3)

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

  • 在Server1上安装2008 Integration Services组件。您需要提供dtexec的显式路径,以确保xp_cmdshell运行2008版本。
  • 在远程(Server2)计算机上运行该程序包。最低的进入门槛是在Server2上创建一个未安排的SQL Agent作业,只需运行包RTS_ETL.BE_2_DUNSMasterPackage.dtsx然后您将启动该作业来代替当前的xp_cmdshell。 EXECUTE msdb.dbo.sp_start_job 'RTS_ETL.BE_2_DUNSMasterPackage'这种方法有两点需要注意
    1. 您可以在机器可以支持的同时运行多个并发dtexec调用。特定的SQL代理作业不能多次运行。
    2. 如果您提供动态运行时选项,那么也无法使用代理作业。

答案 1 :(得分:2)

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