从ASP.NET运行SSIS包时,为什么会出现类没有注册的错误?(Why does class no

2019-10-17 17:13发布

我从我的asp.net应用程序运行SSIS包。 当它在我的本地机(32位操作系统)上运行,一切工作正常。 但是当我发表我的远程计算机(64位操作系统)的网站我得到运行时错误:

Could not load file or assembly 'Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, 
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot
find the file specified.

我把Microsoft.SqlServer.ManagedDTS.dllMicrosoft.SqlServer.DTSRuntimeWrap.dll到我的网站的bin文件夹。

从那以后,我有一个错误:

 “An attempt was made to load a program with an incorrect format”

我打开“启用32位应用程序”选项,在IIS应用程序池,并改变平台目标x86的一个项目的属性。

现在我有以下错误:

 Retrieving the COM class factory for component with CLSID {BA785E28-3D7B-47AE-A4F9-4784F61B598A}
 failed due to the following error: 80040154 Class not registered 
 (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

任何想法如何解决呢? 或者可能是我朝着错误的方向? 任何帮助表示赞赏。

Answer 1:

MSDN参考:

阅读题目了解本地和远程执行的差异在MSDN上了解远程运行包的概念

You can only run a package outside the development environment on a 
computer that has Integration Services installed

承载您的软件包的服务器应具有Integration Services安装。 请在授权模式对于如何工作的咨询文件微软Integration Services 。 仅复制DLL文件所在的包应该运行将不解决该问题的服务器。

您可以远程调用包执行,但你仍然需要托管的软件包的服务器上集成服务。

MSDN博客文章:

运行SSIS包编程阅读1点,描述有关从ASP.NET执行SSIS包在文章中

直接从文章引用:

以编程方式使用SSIS对象模型运行包。 这是在细节联机丛书这里讨论: http://msdn2.microsoft.com/en-us/library/ms136090.aspx

Benefits:一切都在运行过程中,这是很容易设置的变量或在执行前修改包。 您还可以得到有关事件的进展包或要求其停止通过设置CancelEvent。

Drawbacks:显然,这是本地执行-你需要在您的应用程序运行同一台机器上安装SSIS。 这种方法也无法从.NET 1.1的应用程序使用,除非它被移动到.NET 2.0(这应该是很容易做到,在我的经验提高了性能,以及)。

ASP.NET specific:在模拟环境不会被传递到其他线程SSIS包创建的,所以数据源的连接将无法模拟。 此外,ASP.NET可以配置为回收工作进程的情况下,消耗了太多的内存,以提高ASP.NET应用程序的可用性。 由于SSIS可能会消耗大量的内存,如果您有大量的数据,它可以触发这个回收和可靠性较低的应用程序。



Answer 2:

一些背景
这个工程在本地计算机上,因为您的SSIS包编译版本,您有Microsoft.SqlServer.ManagedDTS.dll版本的ASP.NET项目相匹配。 现在,你需要从你的SSIS包构建的库版本匹配您的Microsoft.SqlServer.ManagedDTS.dll版本。 版本必须匹配和32位与64位库必须以及匹配。

回答
一个简单的方法来做到这一点是:SSIS脚本任务添加到您的包(在远程服务器上),然后单击“编辑脚本”按钮。 现在,看看在SSIS库引用,你应该看到的是,SSIS包加载的版本。 这意味着你需要用ASP.NET项目编译之一。 该脚本任务可以事后被删除。



文章来源: Why does class not registered error occur when running SSIS packages from ASP.NET?
标签: asp.net ssis