在C#中更改SSIS包导致LoadFromXML失败

时间:2015-07-06 20:46:14

标签: c# visual-studio ssis

我正在尝试创建现有dtsx文件的副本,以便根据用户的输入更改一些变量。我能够制作文件的副本,查看变量,并将变量设置为正确的输入。但是,当我在Visual Studio中查看该文件时,我会遇到一些错误。

Microsoft Visual Studio无法加载此文档:程序包无法加载到错误0xC0010014"发生了一个或多个错误。在此之前应该有更具体的错误来解释错误的细节。此消息用作遇到错误的函数的返回值"。当CPackage :: LoadFromXML失败时会发生这种情况。

错误列表中包含的错误: Error 3 Error loading test.dtsx: Error loading value "<DTS:Property xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:Name="PackageFormatVersion">6</DTS:Property>" from node "DTS:Property". E:\test.dtsx 1 1

The version number in the package is not valid. The version number cannot be greater than current version number.

我调查了这些错误,并看到了服务器年和视觉工作室年的潜在问题。这两个都是2008版。 我的代码:

        string pkgPath = @"\\server\TestFolder\test.dtsx"            
        app = new Microsoft.SqlServer.Dts.Runtime.Application();
        pkg = app.LoadPackage(pkgPath, null);

        Console.WriteLine(pkg.Variables["filename"].Value.ToString());
        pkg.Variables["filename"].Value = "testFile";
        Console.WriteLine(pkg.Variables["filename"].Value.ToString());

        app.SaveToXml(pkgPath, pkg, null);

如果我打开我用来在Visual Studio中制作副本的文件,它就没有问题 - 当我做app.SaveToXML()时会发生奇怪的事情;

任何想法或建议都会很棒。

1 个答案:

答案 0 :(得分:2)

要将此作为DTEXEC的流程运行,它看起来如下所示。请查看这两个链接,了解有关ProcessStartInfo以及如何使用/ SET的更多详细信息,以便将其添加到您的参数中。首先从命令行进行测试,因为语法很复杂。