从WinForms应用程序运行SSIS包 - Gnarly错误

时间:2015-03-27 09:48:22

标签: c# winforms ssis

我有一个winforms应用程序,它使用Microsoft.SqlServer.ManagedDTS来加载和执行SSIS包。在调试中本地运行时和安装时程序包运行正常,当安装在开发服务器上时程序包运行正常。当部署到实时服务器上时,我收到以下错误。

Error Message

我已经不知道要检查什么,我不想放弃使用这种执行我的包的方法,因为这会给我们真正不喜欢的应用程序增加更多的复杂性。我想介绍一下。有什么想法吗?

为清楚起见,我查了一下:

  • 已安装SSIS且版本相同(Windows / SQL Server 2008)
  • 我在谷歌搜索后添加了以下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();

1 个答案:

答案 0 :(得分:0)

我们看到的错误(COM类错误)是由于目标计算机上未安装Microsoft.SqlServer.ManagedDTS dll的版本引起的。虽然我们确实将dll安装到GAC中,但我们无法解决错误,因为Integration Services是一个服务器组件,并且不能再分发给客户端计算机。该错误并不是非常有用,但实际上它试图说的是它正在尝试加载一个程序集,该地址存储在安装Client Tools SDK时创建的注册表项中。