0

我可以从本地计算机执行一些 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 位版本的 Integration Services。--->

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

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

对此有什么帮助吗?

4

1 回答 1

0

似乎您已经安装了 32 位版本的 SSIS,根据这篇文章64 位集成服务的注意事项如果您从命令提示符运行它,即使安装了 64 位版本,也将使用 32 位版本

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

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

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

于 2013-07-10T10:41:55.293 回答