错误
案例:在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 组的技术支持工程师帮助解决。在工程师查找问题过程中,虽然许多检查点我都做过,不过他查找分析解决问题的思路清晰,以下我列了大概几个步骤。