【问题标题】:SSIS Package calling from Windows service on Windows server R2 : Error -Microsoft.SqlServer.Dts.Runtime.DtsComException:从 Windows 服务器 R2 上的 Windows 服务调用 SSIS 包:错误 -Microsoft.SqlServer.Dts.Runtime.DtsComException:
【发布时间】:2013-07-10 10:11:09
【问题描述】:

我可以从本地计算机执行一些 SSIS 包,但是当我尝试通过 Windows 服务器 R2 上的 Windows 服务执行相同的包时,它会失败。 Windows 服务代码:

使用 DTS = Microsoft.SqlServer.Dts.Runtime;

    DTS.Package pkg;
            DTS.Application app;
            DTS.DTSExecResult pkgResults;
            app = new DTS.Application();
            pkg = app.LoadPackage(pkgLocation, null);
            pkgResults = pkg.Execute();

我正在服务器上安装该服务,但在启动时它在 app = new DTS.Application(); 上失败了

在我已经安装了 SSIS 的服务器上,我还可以从命令提示符执行包。 完整的错误信息是:

Microsoft.SqlServer.Dts.Runtime.DtsComException:

找不到集成服务类。确保 集成服务正确安装在计算机上 运行应用程序。另外,请确保 64 位版本的 如果您运行的是 64 位系统,则会安装集成服务 应用。 --->

System.Runtime.InteropServices.COMException:检索 COM 类 具有 CLSID 的组件的工厂 {BA785E28-3D7B-47AE-A4F9-4784F61B598A} 由于以下原因而失败 错误:80040154 类未注册(HRESULT 异常: 0x80040154 (REGDB_E_CLASSNOTREG))。

在 Microsoft.SqlServer.Dts.Runtime.Application..ctor() --- 结束 内部异常堆栈跟踪 --- 在 Microsoft.SqlServer.Dts.Runtime.Application..ctor()

有什么帮助吗?

【问题讨论】:

  • 报错说确保安装的是64位版本,那你是安装还是只安装了32位版本?
  • 请在下面查看我的 cmets。

标签: c# ssis windows-services sql-server-2008-r2


【解决方案1】:

看来你已经安装了32位版本的SSIS,根据这篇文章64 bit Considerations for Integration Services如果你从命令提示符运行它,即使安装了64位版本也会使用32位版本

默认情况下,64 位计算机同时具有 64 位和 32 位 安装的集成服务命令提示实用程序的版本 将在命令提示符下运行 32 位版本。 32 位版本 因为 32 位版本的目录路径出现在 PATH 环境变量前的目录路径为 64 位 版本。 (通常,32 位目录路径为 :\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn,而 64 位 目录路径是:\Program Files\Microsoft SQL 服务器\100\DTS\Binn.)

现在我相信您的服务是针对 64 位构建的,这使得 SSIS 包请求 64 位版本,但没有找到。

因此,您要么将其更改为 32 位运行,要么安装 64 位版本的集成服务。

【讨论】:

  • 在我的开发盒上安装了 32 位和 64 位版本,我对 Path 环境变量进行了更改以指向各自的 Microsoft SQL Server\100\DTS\Binn 目录,但仍然没有运气。我发现服务器上的一件事 Microsoft.SQLServer.ManagedDTS.dll 不存在,我已将此 dll 复制到服务 BIN 目录。您是否看到任何与此相关的问题?
  • 那么 Windows server R2 机器上安装了 32 位和 64 位版本?至于 Microsoft.SQLServer.ManagedSTS.dll,这里是它的正确位置 stackoverflow.com/questions/6679721/… 对于 2008 R2 它的 C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies 对于 32 和 C:\Program Files \Microsoft SQL Server\110\SDK\Assemblies for 64
  • 谢谢。此 dll 在建议的路径中不可用,所以我应该启动 SQL Server 安装盘并再次安装 SDK 还是仅仅复制库来解决问题?你能建议安装时要选择的组件的名称吗?
  • check Install Integration Services >选择集成服务以安装集成服务服务并在设计环境之外运行包。要完整安装 Integration Services 以及用于开发和管理包的工具和文档,请同时选择 Integration Services 和以下共享功能:Client Tools SDK 以安装用于 Integration Services 编程的托管程序集。
猜你喜欢
  • 2014-08-13
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多