我在安装了集成服务的PC上开发了SSIS包。 然后我想开发一个C#winforms应用程序在客户端PC上执行这些包。但客户端PC安装了SQL Server而没有集成服务。 所以我创建了一个C#应用程序并将包添加到它,并添加了对Microsoft.SQLServe.ManagedDTS的引用然后执行了包,结果是一些简单的包被成功执行但复杂的包没有执行给出错误
“脚本组件,clsid {33D831DE-5DCF-48F0-B431-4D327B9E785D}”的组件元数据无法升级到较新版本的组件。 PerformUpgrade方法失败。 组件丢失,未注册,无法升级或缺少必需的接口。此组件的联系信息是“包含并运行自定义脚本代码。例如,应用限制”收入“列中有效值范围的业务规则,或者在两列中添加值并计算总和的平均值。 Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation;保留所有权利; http://www.microsoft.com/sql/support;10“。 脚本组件验证失败,返回错误代码0xC0048021。
当我在线上网时,我发现大多数解决方案都是关于是否正确安装集成服务。
我的C#代码winform代码
private void button1_Click(object sender, EventArgs e)
{
Package prepartion;
Package storeLoad;
Microsoft.SqlServer.Dts.Runtime.Application app;
DTSExecResult pkgResults;
Project project = Project.OpenProject(System.Windows.Forms.Application.StartupPath + @"\SSISLoad.ispac");
project.Parameters["Con1"].Value = sqlServerTextBox.Text;
project.Parameters["Con2"].Value = "Dsn=mysqlconn";
prepartion = project.PackageItems["Preperation.dtsx"].Package;
storeLoad = project.PackageItems["StoreLoad.dtsx"].Package;
pkgResults = prepartion.Execute();
output.Text = pkgResults.ToString();
pkgResults = storeLoad.Execute();
output.Text += "\r\n" + pkgResults.ToString();
foreach (var x in prepartion.Errors)
{
output.Text += "\r\n" + x.Description;
}
foreach (var x in storeLoad.Errors)
{
output.Text += "\r\n" + x.Description;
}
}
问题是,因为我的应用程序正在运行的客户端PC上没有安装集成服务?
如果没有在客户端PC上安装集成服务,有没有办法完成这项工作。
提前致谢
答案 0 :(得分:0)
没有集成服务不是导致此错误的原因。当您的软件包加载时,似乎正在尝试将它们升级到您使用的任何sql server版本。在升级到更新版本的SSIS甚至有时是SQL Server之前,我已经看到了这一点。