visual studio-更改C#中的SSIS包导致LoadFromXML失败
本文关键字:包导致 LoadFromXML 失败 SSIS 中的 studio- 更改 visual | 更新日期: 2023-09-27 18:01:13
我正试图创建一个现有dtsx文件的副本,以便根据用户的输入更改一些变量。我可以复制文件,查看变量,并将变量设置为正确的输入。但是,当我在VisualStudio中查看该文件时,会出现一些错误。
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.
我调查了这些错误,发现了服务器年和visual studio年的潜在问题。这两个都是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);
如果我在VisualStudio中打开我用来复制的文件,它不会有问题——当我做应用程序时,会发生一些奇怪的事情。SaveToXML((;
任何想法或建议都将是美妙的。
要从DTEXEC将其作为进程运行,它看起来如下所示。请查看这两个链接,了解有关ProcessStartInfo以及如何使用/SET的更多详细信息,以便将其添加到参数中。首先从命令行测试,因为语法可能很挑剔。
- https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110(.aspx
-
https://technet.microsoft.com/en-us/library/ms162810(v=sql.105(.aspx
Using System.Diagnostics; string args = @"/F'c:'MyPackage.dtsx' /SET''package.variables[myvariable].Value;myvalue'"; ProcessStartInfo executePackage = new ProcessStartInfo("dtexec", args); executePackage.UseShellExecute = false; executePackage.RedirectStandardError = true; executePackage.RedirectStandardOutput = true; executePackage.CreateNoWindow = true; StringBuilder output = new StringBuilder(); Process executing = Process.Start(executePackage); while(!executing.StandardOutput.EndOfStream) { output.AppendLine(executing.StandardOutput.ReadLine(); } executing.WaitForExit():