【发布时间】:2017-10-21 07:48:22
【问题描述】:
我在安装了集成服务的 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 上不安装集成服务的情况下完成这项工作。
提前致谢
【问题讨论】:
标签: c# .net sql-server ssis