SQL Server 2005安装失败的处理方法

2016-02-19 21:20 37 1 收藏

今天图老师小编要向大家分享个SQL Server 2005安装失败的处理方法教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 编程语言 】

  错误案例:在Microsoft Virtual PC 2007和一台笔记本电脑上安装MSDN订阅下载的SQL Server 2005企业版时出现问题。安装环境为windows Server 2003 企业版 + sp1,另外一个系统是带sp2的,安装用户使用超级管理员(Administrator)。在安装“Integration Services”步骤时出现安装错误,提示“错误: -2146233087”。

  错误记录如下:

  标题: Microsoft SQL Server 2005 安装程序

  ------------------------------

  无法在 COM+ 目录中安装和配置程序集 C:Program FilesMicrosoft SQL Server90DTSTasksMicrosoft.SqlServer.MSMQTask.dll。错误: -2146233087

  错误消息: Unknown error 0x80131501

  错误说明: 要执行此任务,您必须具有管理凭据。请与您的系统管理员联系以获得帮助。

  有关帮助信息,请单击:

  go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft

  +SQL+Server&ProdVer=9.00.1399.06&EvtSrc=setup.rll&EvtID=

  29549&EvtType=sqlca%5csqlassembly.cpp%40Do_sqlAssemblyReg

  Svcs%40Do_sqlAssemblyRegSvcs%40x80131501

  通过帮助信息的超链接页面,提示“需要为MS DTC服务配置 Network Service帐户运行”,不过笔者的MS DTC本来就是在Network Service帐户下运行。

  通过百度和Google搜索了一下,有不少朋友碰到类似错误消息,不过没有得到好的解决方式,只好自己寻找线索进行尝试。可以肯定的是问题应该出现在访问权限,而这方面常见的问题一般都是对文件系统目录和系统注册表的访问。在微软的客户帮助和支持网站搜索SQL Server的相关安装信息。有一篇文章提到设置“C:WINDOWSRegistration”的权限,确认该目录以及目录下的clb和crmlog文件有完全的读写权限,再次安装SQL Server 2005在“Integration Services”步骤还是提示失败。在安装过程中选择服务帐户时使用内置系统帐户或使用域用户帐户都一样。

  看来问题没有这么简单,笔者在另外一个系统中安装时启用RegMon进行注册表操作监视,过滤后只监视“msiexec.exe:484”进程,在报以上面提到的错误后保存监视日志到文件。

  通过监控日志查看失败的情况。由于没有仔细查找,在后来通过微软SQL Server组的技术支持工程师才想到问题早应该解决。以下是我事后再次查看RegMon Trace发现的问题故障点,通过下面的日志看出使用本机Administrator访问注册表.HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.DataFileMessage项时被拒绝。

  11305 32.35072327 msiexec.exe:484 OpenKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.DataFileMessage ACCESS DENIED NBCN-ZZAdministrator

  11306 32.36096954 msiexec.exe:484 QueryKey HKCUSoftwareClasses SUCCESS Name: REGISTRYUSERS-1-5-21-730333180-4162487032-3015738926-500_CLASSES

  11307 32.36102295 msiexec.exe:484 OpenKey HKCUSoftwareClassesMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.DataFileMessage NOT FOUND

  11308 32.36108017 msiexec.exe:484 OpenKey HKCR SUCCESS

  11309 32.36190796 msiexec.exe:484 CreateKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.DataFileMessage ACCESS DENIED NBCN-ZZAdministrator

  11310 32.36222076 msiexec.exe:484 CreateKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.DataFileMessage ACCESS DENIED NBCN-ZZAdministrator

  由于粗心结果又多做了很多工作,查看系统的“组件服务”配置是否有问题,但是没有发现什么异常。

  在再次出现安装问题后,这次就直接点击“忽略”按钮继续安装SQLServer的其他部分,安装结束后,提示安装成功完成。

  运行“dcomcnfg”,打开系统组件服务。展开控制台根目录-组件服务-计算机-我的电脑-COM+应用程序节点,没有发现Microsoft.SqlServer.MSMQTask节点,可见该COM+应用程序没有安装上。

  再次运行SQL Server 2005安装程序进行添加删除安装,提示安装成功,在“组件服务”中看到“Microsoft.SqlServer.MSMQTask”。看来问题解决了,但是那时还不知道问题出在哪里。卸载SQL Server 2005,发现“Microsoft.SqlServer.MSMQTask”并没有卸载,测试只安装SQL Server 2005的Integration Services服务。结果安装失败,选择“中止”取消安装,再次确认存在“Microsoft.SqlServer.MSMQTask”服务。

  接下去笔者把安装过程中出现的错误发送给微软,请SQL Server 组的技术支持工程师帮助解决。在工程师查找问题过程中,虽然许多检查点我都做过,不过他查找分析解决问题的思路清晰,以下我列了大概几个步骤。

  一.MSDTC运行帐户问题

  确认MSDTC (Microsoft Distributed Transaction Coordinator)服务正在运行,并且其启动帐户是NT AUTHORITYNetwork Service”。按照以下步骤来检查:

  1. 点击“开始”-“运行”-services.msc

  2. 在服务列表中找到Distributed Transaction Coordinator,双击以编辑其属性

  3. 在属性窗口切换至登录选项卡,确认其启动帐号为”NT AUTHORITYNetwork Service”(密码为空即可)

  4. 启动DTC服务再尝试安装SQL Server 2005

  结果:这个步骤我已经尝试过,不是这个问题。

  二.分析SQL Server 2005安装日志

  将C:Program FilesMicrosoft SQL Server90Setup BootstrapLOG目录下所有的文件(包括Summary.txt和Files子目录下的所有文件)发送给微软技术支持工程师进行分析。

  结果:这个步骤我没有做过,不过微软工程师好像也没有发现线索。

  三.COPY安装程序到硬盘安装尝试

  建立 D:SQLServer2005 文件夹, 创建以下两个子文件夹:Servers和Tools。Serviers文件夹拷贝SQL Server2005的第一张安装盘,包含所有要安装主 SQL Server 2005 组件。 Tools文件夹拷贝SQL Server 2005的第二张盘,包含为 SQL Server 2005 联机丛书和工具组件。运行D:SQLServer2005Servers 文件夹下的Setup.exe,启动 SQL Server 2005 安装程序。

  结果:以上方式安装过程中还是碰到同样的问题。

  四.重新安装 COM+应用程序

  1.从控制面板的“添加或删除程序”中,单击“添加/删除 Windows 组件”。

  2.在“Windows 组件向导”中,不对选择做任何更改,单击“下一步”。一直单击以完成向导,然后再次运行 SQL Server 2005 安装程序。

  结果:问题没有解决。

  通过以上分析微软的工程师总结如下:

  目前还不确定引起这个错误的原因,并且在安装日志中也没有找到更多的有用信息。可能引起此类错误的原因有以下几种:

  1. COM+的配置问题。

  2. 帐号权限问题。

  3.有一些安装失败的Microsoft.SqlServer.MSMQTask.dll情况出现在测试版中,或者是由于未完全删除的测试版组件而导致安装失败。

  4. 除此之外还有一些类似的问题都是与64位操作系统或者Cluster环境有关。

  我认为以上的一些原因可以排除,看来又是Live Meeting的时候了,和微软工程师约定时间联机查找问题。

  五.手工注册Microsoft.SqlServer.MSMQTask.dll

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  使用regsvcs.exe应用程序工具注册.NET服务

  使用cmd执行过程如下:

  C:WINDOWSMicrosoft.NETFrameworkv2.0.50727regsvcs.exe "C:Program FilesMicr

  osoft SQL Server90DTSTasksMicrosoft.SqlServer.MSMQTask.dll"

  Microsoft(R) .NET Framework 服务安装实用工具版本 2.0.50727.42

  Copyright (c) Microsoft Corporation. All rights reserved.

  出现下列安装错误:

  1: 要执行此任务,您必须具有管理凭据。请与您的系统管理员联系以获得帮助。

  2: 注册程序集“Microsoft.SqlServer.MSMQTask, Version=9.0.242.0, Culture=neutral,

  PublicKeyToken=89845dcd8080cc91”失败。

  3: 对注册表项“HKEY_CLASSES_ROOTMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.

  DataFileMessage”的访问被拒绝。

  分析结果:

  这看起来是由于当前Windows用户在该注册表键值上没有足够的权限造成的。经过研究类似案例,在某些情况下,即使是Administrators组的用户也可能出现对这些键值没有Full Control的情况。需要确认一下在这些注册表值上,Administrators组用户是否有Full Control。在注册表中右键点击注册表值-选择权限来查看及改变该值上的权限设置。如果权限设置都正确的话,可以试着抓一个RegMon trace来看到底是不是注册表键值的权限问题导致这个错误。

   看来问题终于找到了。

  六.监控注册表

  1. 运行RegMon工具,通过菜单Options-Filter中设置Include list,把Regsvcs.exe加入Include list中。

  2. 执行regsvcs.exe "C:Program FilesMicrosoft SQL Server90DTSTasksMicrosoft.SqlServer.MSMQTask.dll"

  3. 在Regsvcs.exe执行失败停止后,保存RegMon生成的log。

  分析RegMon Trace。定位问题如下:

  5484 17.98829079 RegSvcs.exe:3404 OpenKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZAdministrator

  5488 17.98927116 RegSvcs.exe:3404 CreateKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZAdministrator

  5489 17.98955727 RegSvcs.exe:3404 CreateKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZAdministrator

  6431 19.89454460 RegSvcs.exe:3404 OpenKey HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZAdministrator

  以上其实就是我一开始使用RegMon 时应该发现的问题,结果到现在才发现。

  从这几条记录来看,问题是对注册表值HKCRMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask的权限问题。而RegSvcs进程在遇到这些权限问题之后,并没有马上终止,还有一些别的注册表活动。我查看了注册表HKEY_CLASSES_ROOTMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.

  DataFileMessage项的权限,Administrators组没有“完全控制”和“读取”权限,对其进行授权。重新运行注册,结果又报另外的注册表项没有权限,对其进行添加,直到注册成功,以下是输出结果。

  C:WINDOWSMicrosoft.NETFrameworkv2.0.50727regsvcs.exe "C:Program FilesMicr

  osoft SQL Server90DTSTasksMicrosoft.SqlServer.MSMQTask.dll"

  Microsoft(R) .NET Framework 服务安装实用工具版本 2.0.50727.42

  Copyright (c) Microsoft Corporation. All rights reserved.


  正在自动将“Microsoft.SqlServer.ManagedDTS, Version=9.0.242.0, Culture=neutral,

  PublicKeyToken=89845dcd8080cc91”导出为“C:WINDOWSassemblyGAC_MSILMicrosoft.

  SqlServer.ManagedDTS9.0.242.0__89845dcd8080cc91Microsoft.SqlServer.ManagedDTS.

tlb”。

  警告: 程序集未声明 ApplicationAccessControl 属性。默认情况下启用应用程序安全性。

  已安装的程序集:

  程序集: C:Program FilesMicrosoft SQL Server90DTSTasksMicrosoft.Sql

  Server.MSMQTask.dll

  应用程序: Microsoft.SqlServer.MSMQTask

  TypeLib: C:Program FilesMicrosoft SQL Server90DTSTasksMicrosoft.Sq

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  lServer.MSMQTask.tlb

  C:WINDOWSMicrosoft.NETFrameworkv2.0.50727

  修改授权的相关注册表项如下:

  HKEY_CLASSES_ROOTMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask

  HKEY_CLASSES_ROOTMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.EncryptionAlgorithmWrapper

  HKEY_CLASSES_ROOTMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.ServCompMQTask

  HKEY_CLASSES_ROOTMicrosoft.SqlServer.Dts.Tasks.MessageQueueTask.Formatter

  再次运行“dcomcnfg”,打开系统组件服务。展开控制台根目录-组件服务-计算机-我的电脑-COM+应用程序节点,发现Microsoft.SqlServer.MSMQTask节点,该COM+服务已经安装成功。

来源:http://www.tulaoshi.com/n/20160219/1625941.html

延伸阅读
标签: SQLServer
安装SQL server 2005时,如果你选择的是默认安装,就不会安装AdventureWorks 数据库。因为许多教程和例子都需要用到AdventureWorks 数据库,所以安装AdventureWorks 数据库非常必要。本文将论述此数据库的获得和安装方法。 下载并安装AdventureWorks 首先,去微软官方网站下载AdventureWorksdb.msi,这是AdventureWorks 的安装程序。然后...
标签: SQLServer
SQL SERVER 2005中,终于引入了表分区,就是说,当一个表里的数据很多时,可以将其分拆到 多个的表里,大大提高了性能。下面举例子说明之 比如,在C盘下建立如下几个目录 C:Data2Primary C:Data2FG1 C:Data2FG2 C:Data2FG3 C:Data2FG4 其中primary存放的是主数据库文件,其他FG1--FG4存放四个单独的文件组,可以见创立数据库 Data Partition DB...
标签: SQLServer
微软总是试图使它的软件安装尽可能地简单顺畅,SQL Server 2000的安装也不例外。你从安装光盘的x86 etup文件夹启动setupsql.exe、在安装对话框中填入一些细节后,几分钟内,安装将在没有用户介入的情况下继续执行。你甚至可以成功的安装SQL Server 2000而不用明白那些选择意味着什么——只需在大多数安装对话框中点击“下一步”。然而,我强烈建...
执行环境是SQL Server中设定用户权限的认证方式,例如,当您登录到SQL Server的时候,登录账户就被赋予了一定的权限,其中可能包括登录的功能、访问数据库以及在数据库中执行某些操作的功能。 SQL Server 2005包含了EXECUTE AS语句,通过使用EXECUTE AS语句,您可以为批处理和过程转换执行环境,这样,调用该批处理或过程的用户就可以...
SSIS(SQL Server Integration Service)是在SQL Server2000的DTS的基础上做的一个非常大的改进的新工具。采用了数据流和控制流分离,设计和部署分离的架构设计,引入了更多新的转换,终于向着专业级的ETL工具迈了一大部。 由于相对DTS的改进非常大,开发和使用SSIS也就显得比DTS略显复杂。但是对于大型项目,实际上SSIS比DTS要简单的...

经验教程

263

收藏

78
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部