无法将包加载为 XML,因为包没有有效的 XML 格式
Posted
技术标签:
【中文标题】无法将包加载为 XML,因为包没有有效的 XML 格式【英文标题】:Unable to load the package as XML because package does not have a valid XML format 【发布时间】:2015-03-23 19:14:59 【问题描述】:我正在为用户创建一个 Winform 以运行 SSIS 包。以下是我找到的解决方案:
private void button1_Click(object sender, EventArgs e)
string sPackage = @"C:\FilePath.dtsx";
string sConfig = @"C:\FilePath.xml";
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Open Package";
fDialog.Filter = "SSIS Package (*.dts, *.dtsx)|*.dts;*.dtsx";
fDialog.InitialDirectory = @"C:\";
sPackage = fDialog.FileName.ToString();
OpenFileDialog f2Dialog = new OpenFileDialog();
fDialog.Title = "Open Package";
fDialog.Filter = "SSIS Package (*.dts, *.dtsx)|*.dts;*.dtsx";
fDialog.InitialDirectory = @"C:\";
sConfig = fDialog.FileName.ToString();
MyEventListener eventListener = new MyEventListener();
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Microsoft.SqlServer.Dts.Runtime.Package pkg = app.LoadPackage(sPackage, eventListener, false);
Microsoft.SqlServer.Dts.Runtime.DTSExecResult pkgResults = pkg.Execute(null, null, eventListener , null, null);
MessageBox.Show(pkgResults.ToString());
class MyEventListener : DefaultEvents
public override bool OnError(DtsObject source, int errorCode, string subComponent,
string description, string helpFile, int helpContext, string idofInterfaceWithError)
// Add application-specific diagnostics here.
MessageBox.Show("Error in " + "/t" + source + "/t" + subComponent + "/t" + description);
return false;
以下是我收到此错误的代码行:
Microsoft.SqlServer.Dts.Runtime.Package pkg = app.LoadPackage(sPackage, eventListener, false);
我有 .dtxs 包的正确文件路径。我在 SSIS 方面有经验,只是不尝试从 C# 中的 Winform 执行。我做错了什么?
【问题讨论】:
您收到的错误信息是什么?如果你做到了app.LoadPackage(sPackage, null);
,它有用吗?
它仍然不起作用我让它(sPackage, null)
。以下是完整的错误:Error in /t Microsoft.SlServer.Dts.Runtime.Packge /t/t Unable to load the package as XML because of package does not have a valid XML format. Aspecific XML parser error will be posted.
然后我得到另一个错误:Error in Microsoft.SqlServer.Dts.Runtime.Package /t/t Failed to open package file due to error 0x80070057 The parameter is incorrect. This occurs when loading a package and the file cannot be opened or loaded correctly into the XML document. This can be the result of specifying an incorrect file name when calling LoadPackage or the specified XML file has an incorrect format
您检查过 sPackage 的值吗?我怀疑这不是 LoadPackage 方法所期望的
我已经调试过了。它是 .dtsx 包的 FilePath。这可能是许可的事情吗?
【参考方案1】:
在这里找到答案here。由@Faiz 回答。
private void button1_Click(object sender, EventArgs e)
string pkgLocation;
Package pkg;
Microsoft.SqlServer.Dts.Runtime.Application app;
DTSExecResult pkgResults;
MyEventListener eventListener = new MyEventListener();
pkgLocation =
@"C:\FilePath.dtsx";
app = new Microsoft.SqlServer.Dts.Runtime.Application();
pkg = app.LoadPackage(pkgLocation, eventListener);
pkgResults = pkg.Execute(null, null, eventListener, null, null);
MessageBox.Show(pkgResults.ToString());
class MyEventListener : DefaultEvents
public override bool OnError(DtsObject source, int errorCode, string subComponent,
string description, string helpFile, int helpContext, string idofInterfaceWithError)
// Add application-specific diagnostics here.
MessageBox.Show("Error in " + "/t" + source + "/t" + subComponent + "/t" + description);
return false;
【讨论】:
考虑到变量名称的更改,唯一的区别似乎是省略了sPackage = fDialog.FileName.ToString()
。你觉得这准确吗?
@billinkc 它有效..我只需要为我的版本获取程序集
对,它可以工作,但你不好奇为什么它与原始代码相比可以工作吗?
我调试并逐步完成了原始代码。以下是让我搞砸的原因:sPackage = fDialog.FileName.ToString();
和sConfig = fDialog.FileName.ToString()
在查看汽车时...文件路径现在为空,因此给出了错误的参数...但是是的,我很好奇另一个在新块中消除的原始块中的代码。你能解释一下吗?以上是关于无法将包加载为 XML,因为包没有有效的 XML 格式的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse - 如何在整个项目中“将包声明更改为 ....”
在 SQL 中将 XML 文档转换为表格数据集的有效方法,因为随着 xml 的增长,交叉应用 xml 查询的性能呈指数级下降