2017-08-03 84 views
0

最终,我试图使用Azure VM(Windows Server 2016 Datacenter)中的任务计划程序定期运行SSIS包。从我的开发机器(Windows 10)上的命令行,我可以运行...从命令行运行SSIS包时出错

dtexec.exe /Project "pathToMy.ispac" /Package "pathToMy.dtsx" 

...并且按预期工作。然而,当我尝试从Azure的VM我碰到下面的错误做同样的:

Microsoft (R) SQL Server Execute Package Utility Version 11.0.6020.0 for 32-bit Copyright (C) Microsoft Corporation. All rights reserved.

Started: 2:17:46 PM Could not load package "MyPackage.dtsx" because of error 0x80131500. Description: The package failed to load due to error 0xC0011008 "Error loading from XML. No further detailed error information can be specified for this problem because no Events object was passed where detailed error information can be stored.". This occurs when CPackage::LoadFromXML fails. Source: MyPackage Started: 2:17:46 PM Finished: 2:17:47 PM Elapsed: 0.547 seconds

在两台机器上,我有相同版本的SQL Server 2016开发者(W/SSIS)和Visual Studio 2015年安装。另外,我可以在Visual Studio中的VM上运行该包。这只是从dtexec.exe,我有问题。

我试过这里的每个解决方案,从其他职位得到类似的错误,没有帮助。有任何想法吗?

感谢, 伊恩

+1

dtexec也是同一版本吗?你可以确认你正在使用的保护级别 - 不保存,用密码加密,用用户密钥加密 –

+0

@ Nick.McDermaid - 你钉了它!显然,全局路径指向VM上的旧版本(v11),我的开发机器上的版本为v13。通过提供v13文件的完整路径,我能够实现它。谢谢!如果你想重复这个建议作为答复而不是评论,我很乐意将它标记为正确的答案。 –

+0

如果您可以将您所做的事情(包括路径等作为答案)记录为答案并自行接受,最好的做法是什么? –

回答

0

感谢@ Nick.McDermaid,回答这个谜已经找到。通过在开发机器和虚拟机上运行dtexec.exe(不带参数),我可以看到VM版本是v11,开发版本是v13,这就解释了为什么我得到错误,为什么一个人工作了,没有。

然后,我在VM上为文件资源管理器搜索了dtexec.exe副本,发现了几个。显然,环境路径被设置为查找旧版本。我可能可以找到导致这个问题的变量并改变它。然而,出于对打破别人想要快速解决方案的担忧,我选择使用正确版本的完整路径执行。对于V13,该结束了......

"C:\Program Files\Microsoft SQL Server\130\DTS\Binn\dtexec.exe"

所以,我的计划任务我为自己的“启动程序”动作以下属性。

Program/Script: "C:\Program Files\Microsoft SQL Server\130\DTS\Binn\dtexec.exe"

Add Arguments: /Project "bin/Development/myProject.ispac" /Package "myPackage.dtsx"

Start in: c:{path to my .dtsx file}

+0

感谢您为此问题的其他人记录此问题。我可以添加任何人在这方面陷入困境:请注意,原始日志消息包含“版本11.0.6020” - 检查您的版本!我当然同意使用完全合格的路径,而不是试图弄清楚它是如何到达这个默认路径的(它可能是你巨大的PATH环境变量中的第一个有效路径)。如果你有这个能力,你应该接受你自己的答案 –