我有一个winforms应用程序,它使用Microsoft.SqlServer.ManagedDTS
来加载和执行SSIS包。在调试中本地运行时和安装时程序包运行正常,当安装在开发服务器上时程序包运行正常。当部署到实时服务器上时,我收到以下错误。
我已经不知道要检查什么,我不想放弃使用这种执行我的包的方法,因为这会给我们真正不喜欢的应用程序增加更多的复杂性。我想介绍一下。有什么想法吗?
为清楚起见,我查了一下:
我在谷歌搜索后添加了以下app.config键useLegacyV2RuntimeActivationPolicy="true"
尝试编译为32位和64位应用程序
确保DLL已在目标计算机上的GAC中注册
两个方框中的所有权限相同
抛出错误的源代码摘录如下:
var app = new Microsoft.SqlServer.Dts.Runtime.Application();
var pkg = app.LoadPackage(strSSISPath, null);
pkg.ImportConfigurationFile(strSSISConfig);
var result = pkg.Execute();
if (result.Equals(DTSExecResult.Success))
{
string strMsg = strMHType + " extract completed successfully.";
MessageBox.Show(strMsg, strMHType, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
foreach (var err in pkgMHMDS.Errors)
{
MessageBox.Show(err.Description, strMHType, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
MessageBox.Show(strMHType + @" extract failed!", strMHType, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
pkgMHMDS.Dispose();
答案 0 :(得分:0)
我们看到的错误(COM类错误)是由于目标计算机上未安装Microsoft.SqlServer.ManagedDTS dll的版本引起的。虽然我们确实将dll安装到GAC中,但我们无法解决错误,因为Integration Services是一个服务器组件,并且不能再分发给客户端计算机。该错误并不是非常有用,但实际上它试图说的是它正在尝试加载一个程序集,该地址存储在安装Client Tools SDK时创建的注册表项中。