清除尝试在MS SQL 2008 R2上执行SSIS包时生成的异常0x80040154



可能重复:
在MS SQL 2008R2环境中执行简单ssis包时生成异常0x80040154

我正试图在MS SQL 2008 R2上执行一个简单的SSIS包。我正在读取一个平面源文件,根据ID对数据进行排序,并将结果写入一个新的平面源文件目标中。但当我执行时,我得到以下异常:

TITLE: Microsoft Visual Studio
Failed to start project
ADDITIONAL INFORMATION:
Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) (Microsoft.DataTransformationServices.VsIntegration)

从这里开始我该怎么做?

很多论坛要求重新安装MS SQL环境,但我不确定这是否是消除异常的唯一方法。

有什么更好或替代的方法可以摆脱这个例外?

谢谢。

试试这个:

此错误消息最常见的原因是在64位计算机上运行32位dtExec。这篇文章将正确地解释它——32位和64位的快速参考SSIS。

编辑:文章的缓存谷歌链接:http://webcache.googleusercontent.com/search?q=cache:FQN0QKQCleEJ:toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32and64-bits.html+&cd=1&hl=en&ct=clnk&gl=au#!http://toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32-and-64-bits.html

关于SQL Server Integration Services和64位,有很多误解。我不得不在论坛上让很多人走上正确的道路——主要是在SSIS包中的一个被误解的特定设置上。当然,此信息仅适用于64位体系结构-如果您运行的是Windows 32位操作系统,则别无选择-您的软件包将始终以32位模式运行
如果您有64位系统,为什么要在32位模式下运行?大多数是司机。我指的不是硬件驱动程序,而是数据提供商。例如,Excel和某些版本的Oracle没有64位提供程序。因此,对于不断增长的64位用户群,以下是在您选择的64位或32位模式下执行Integration Services包的要点。背景我可以设计得很好,为什么不能运行?一个小背景开始。Business Intelligence Design Studio(BIDS)是一个32位的应用程序。当你设计你的软件包时,你使用的是32位的设施,在这件事上别无选择。当您使用DTExec执行包时,您可以选择32位或64位操作,但64位安装的默认模式是使用64位模式(显然)。但是,SSIS中一些常用的对象没有64位的对应对象,因此会导致包失败。不幸的是,它通常不会在这些消息中的任何地方表明故障在于32位与64位。通常是这样的:0x80040154。。。类别未注册对连接管理器XXX的AcquireConnection方法调用失败,错误代码为0xC02020090xC00F9304。。。SSIS错误代码DTS_E_OLEDB_EXCEL_NOT_SUPPORTEDOLE DB访问接口"Microsoft.Jet.OLEDB.4.0"尚未注册(我在这里包含了这些示例错误,希望那些在网上搜索的人能找到这篇文章!)为什么我想要32位模式?在执行SSIS包中使用32位模式的最常见原因是Excel提供程序。它目前不适用于64位,这将导致您的程序包崩溃。(据报道,Office 14(2010)支持64位,尽管它不支持与32位并行。)这也适用于其他Office提供商,特别是Access,以及其他一些第三方驱动程序和提供商(如Oracle)。它们根本无法在64位环境中工作(2010年以前)。您可能还希望运行Execute DTS 2000 Package Tasks,而这些任务也只能在32位模式下运行。这取决于您执行程序包的方式有很多方法可以执行SSIS包,这是决定您是以64位模式还是32位模式运行SSIS包的主要因素。因此,从下面的列表中选择你的执行环境,并阅读如何强制执行你想要的bitness。在商业智能开发工作室(BIDS)内选择Bitness如果您在BIDS中运行包,除非您使用执行包任务或执行进程任务来运行子包,否则设置很简单。您当前打开的程序包将(默认情况下)以64位模式运行。控制此操作的设置是名为Run64BitRuntime的项目上的一个属性。若要访问此属性,请右键单击解决方案资源管理器中的Integration Services项目,然后选择"属性"。然后在编辑器中选择"调试"节点。这里的默认值是"true",这意味着该项目中的所有包都将以64位模式运行。如果将其更改为"false",则所有程序包都将以32位模式运行。特别提示:执行包任务无论子包所属项目的Run64BitRuntime设置如何,无论ExecuteOutOfProcess的设置如何,通过执行包任务执行的任何子包都将以与父包相同的模式运行。这意味着,即使在设计子包的项目中将Run64BitRuntime设置为false,如果父包的Run64BitRun属性为true,它也将在BIDS中以64位模式执行。特别提示:执行流程任务执行进程任务允许您独立于父程序包中的设置选择32位模式,但代价是在另一个进程中运行子程序包。与稍后描述的SQL代理方法一样,您可以专门标识32位DTExec以在32位模式下运行SSIS子包(请参见下文)。使用SQL代理选择Bitness在Integration Services 2008中,指示SQL Agent希望包在什么环境中运行很简单。SSIS2005让您跳过更多的困难。Integration Services 2008在代理作业步骤属性中,您将使用SQL Server Integration Services包类型的步骤。如果你转到执行选项选项卡,你会在底部看到一个"使用32位运行时"的选项。Integration Services 2005使用SQL 2005时,不能使用Integration Services包类型的作业步骤以32位模式运行SSIS包。您可以使用操作系统类型的作业步骤,并在您使用的命令行中专门引用32位版本的DTExec,然后手动为DTExec指定参数。跨栏#1-查找32位DTExec查找可执行文件应该不难。在标准的64位安装中,32位DTExec。EXE应位于"\Program Files(x86)\Microsoft SQL Server\90\DTS\Binn"文件夹中。它被简单地称为"DTExec.EXE",并且不会以任何方式将自己标识为32位应用程序——你必须通过它位于32位文件夹中来"知道"它。(或者你可以试着执行它并观看任务管理器。)如果你已经将SQL安装到了一个非标准的位置,你可能需要稍微搜寻一下。如果您根本找不到它,那么您可能没有在64位计算机上安装32位组件。在安装SQL Server期间,如果只选择了"Integration Services",而没有安装"Business Intelligence Development Studio"或"Management Tools-Complete",则不会安装32位DTExec。您必须运行SQL安装程序,然后安装其中一个选项。跨栏#2-确定命令行参数接下来,您需要确定从命令行操作DTExec所需的命令行参数。您可以阅读文档并尝试自己确定参数和设置,但我建议您使用附带的GUI工具的强大功能。SQL代理中的IS作业步骤和DTExecUI工具都提供了配置SSIS包运行的GUI。在GUI的最后一页,它非常有用地放置了运行DTExec所需的确切命令行参数,这些参数基于您在GUI的其他十个选项卡上选择的所有配置选项。利用它!使用GUI设置包执行,然后从最后一页复制参数。预编译脚本这只是Integration Services 2005中的一个问题,开发团队在SSIS 2008中完全解决了这个问题。脚本任务上有一个"预编译"选项,默认情况下设置为"true"。如果以某种方式将其设置为"false",则包可能无法在64位环境中执行。32位ODBC驱动程序在Windows中使用32位ODBC驱动程序还有另一个奇怪之处——至少在Server 2003、2008、Vista和Windows 7 64位操作系统中是这样。使用这些驱动程序的第一步是设置DSN来处理存储服务器名称和其他详细信息。根据我的经验,首先自然要打开控制面板中的"数据源"小程序。这是错误#1,因为小程序只管理64位驱动程序。您根本看不到您的列表。下一步是四处寻找并意识到控制面板中也有一个"数据源(32位)"小程序。这是第二个错误,但不是你的错误。根据我的经验,这个图标导致了一些奇怪的32/64位混合管理实用程序。它肯定没有管理我的32位源代码。如果你启动它,然后查看任务管理器中的进程选项卡,你会看到一个标记为"odbcad32.exe"的进程……但你会注意到它后面没有"*32",表示它是一个32位应用程序。无论它试图管理什么,都不是32位ODBC驱动程序。您需要做的是导航到SYSWOW64文件夹中的另一个odbcad32.exe。ODBC数据源管理员确实在32位进程中管理32位驱动程序。参考资料/资源这些信息中的大部分(如果不是全部的话)也在MSDN的一篇文章中提炼出来:Integration Services的64位注意事项。如果你在上面发现了其他有用的文章、提示或错误,请发表评论。其他一些非常有用的文章:如何:运行软件包,MSDNMicrosoft SSIS开发人员Michael Entin在SSIS脚本组件中的64位引用。Microsoft SSIS开发人员Douglas Laudenschlager的《SQL Server Integration Services的64位注意事项》。SSIS的app.config在哪里?由SQL Server MVP Darren Green撰写。Rob Kerr在64位环境中配置Oracle驱动程序Hrvoje Piasevoli在SSIS中从64位Excel导入数据通过SQLCAT实现来自同一机器的32位和64位连接发布于2009年10月18日由Todd McDermid

最新更新