正如题所示,昨天在SQL Server2005安装过程中出现这样的问题(我的系统是VISTA SP1),安装之前警告提示如题,安装到Notification Services组件的时候便出现了以下这样的错误:
无法在 COM+ 目录中安装和配置程序集 D:\Program Files\Microsoft SQL Server\90\NotificationServices\9.0.242\Bin\microsoft.sqlserver.notificationservices.dll。错误: -2146233087
错误消息: Unknown error 0×80131501
错误说明: 事务管理器可用。 (异常来自 HRESULT:0×8004D01B)
于是Google一下,似乎说是MSDTC这项服务的问题,解决方法如下:
1、删除注册表中的键:
开始->运行->输入”regedit”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
HKEY_CLASSES_ROOT\CID
2、停止MSDTC服务:net stop msdtc
3、卸载MSDTC服务:msdtc -uninstall
4、重新安装MSDTC服务:msdtc -install
5、重新启动电脑
我照着上面的方法操作,结果未遂,依旧在安装的时候提示”COM+ 目录要求”警告。这下我急了,我都照着上面的做了,还是不行!(我想上面的方法是对于MSDTC这项服务不能启动的用户而言的吧,如果本身能启动想必就不用执行上面的步骤了)
继续Google…
结果出来了,原来原因是关于COM+的服务没启动的关系,于是我找到了COM+相关服务,MSDTC只是其中一个依赖服务而已。开始->运行->输入”services.msc”,我看了看COM+的相关服务,就差COM+ System Applycation这项服务没开,于是想开之,失望:提示1068错误,依赖的服务没启动!!!神奇了,我右键COM+ System Application->属性->依存关系,看了下,我看似所有的依存服务都开了!就这样,从中午折腾到晚上,一直没解决!后来无意中我又打开了注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\COMSysApp,看到了一个项”DependOnService”,打开看了下,依存的服务有三项
“RpcSs
EventSystem
SENS
”
那这样就好办了,在命令行(为什么不去service.msc呢?看着这些简写实在一时想不出来全名是什么,这样的情况下命令行最高效):
sc
start
RpcSs
依次开启每个服务,当我
sc
start
SENS
,提示服务被禁用,o,my god,看来关键问题是这里了,离成功就不远了!
于是到services.msc找这个服务,翻眼翻了半天,居然找不到?乖乖,难道这个服务没被装上?那课如何是好啊?
再用命令行,死马当活马医,未必这个服务没装上,只是自己找不到罢了,硬着头皮看命令行SC的帮助,用下列命令将SENS这个服务设成了手动
sc config sens start= demand
注意=号后面有空格,
sc
start
COMSysApp
成功!回到SQL 2005安装,安装不提示“COM+ 目录要求警告”了,安装过程也没有开篇的“无法在 COM+ 目录配置。。。”的问题了!
那至于那个神秘的SENS到底服务全名是什么呢?很简单,还是命令行
C:\Users\vovi>sc getdisplayname sens
[SC] GetServiceDisplayName 成功
名称 = System Event Notification Service
日啊,原来是这个服务啊!一般优化的系统都会把这个服务禁用的,看那描述本想也没什么用,所以当时手动优化的时候把此服务禁用了,实在想不出有什么必要。现在吃到苦头了,要学习的话还是谨慎行事,不了解服务是什么用最好是选择手动!
通过这次,我终于体验到了“高效的命令行”,况且让人有写代码的感觉