问题描述:
======
在
windows Server 2003 SP2上安装SQL Server 2005 SP3(Cluster)失败
处理方法:
======
通过检查您的SQL Server日志,我发现了日志中的错误记录。
您尝试在active node上安装sql svr 2005 SP3,并在passive node机器上(双结点)报错,在SQL9_Hotfix_KB955706_sqlrun_sql.msp.log中,错误记录如下:
MSI (s) (04!18) [10:58:33:693]: PROPERTY CHANGE: Adding ServiceNameSQL.96E1321F_B7D1_4051_BEF1_FE74AC590F64 property. Its value is 'MSSQL$SANMISARCH1'.
Using PrevRegRootPath: Software\Microsoft\Microsoft SQL Server\MSSQL.2
GetServiceUserGroup failed for SANMISARCH1, 5
Error Code: 0x80070534 (1332)
Windows Error Text:
No mapping between account names and security IDs was done.
这表明您的SQL Server Node的注册表中所记录的由Group生成的SID可能是错误的。
检测办法:
1. 请将PsGetsid解压到C:\psgetsid
2. 打开注册表找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\找到对应的instance的data值,比如SANMISARCH1对应的是MSSQL9.X
3. 然后找到找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL9.X\Setup
4. 找到下列key的值,类似于“S-1-5-21-555410236-2480729857-394803345-1013”:
· AGTGroup
· FTSGroup
· SQLGroup
5. 打开CMD,转到C:\ psgetsid,然后解析SIDs,比如如果你的SID是“S-1-5-21-555410236-2480729857-394803345-1013”:就运行
Psgetsid S-1-5-21-555410236-2480729857-394803345-1013
然后看到对应匹配的group,然后确定当前机器是不是在这个group下 (三个ID都测试一遍)
6. 打开Control Panel-> Administrative Tools-> Computer Management, 得到Local Computers and Groups, 来检查你是否有以下的名称:
· SQLServer2005MSSQLUser$ComupterName$InstanceName
· SQLServer2005SQLAgentUser$ComupterName$InstanceName
· SQLServer2005MSFTEUser$ComupterName$InstanceName
7. 如果和刚才解析出来的名称不匹配,根据控制面板中的名称再利用Psgetsid在CMD中将名称解析成ID,如SQLServer2005MSFTEUser$ComupterName$InstanceName,则输入Psgetsid QLServer2005MSFTEUser$ComupterName$InstanceName,将其修改至对应的注册表值中
解决办法:
在DC上找一下之前为cluster node创建的group,或者直接创建一个新的group,并更新到cluster node的注册表中:
1. 在node的机器中运行services.msc找到当前node对应instance的SQL Server Service Account,并确保Active node和passive node的Account是同一个
2. 在DC上找到Start->Adminstrative Tools->Active Directory Users and Computers->Users->创建一个Group,比如名字叫:SQL Group,选择默认选项Global和Security
3. 在SQL Group中将之前找到的NODE上的Service Account加到该Group中
4. 运行之前的工具输入类似于Psgetsid SQL Group的指令,将生成的ID覆盖到两个node机器中注册表的对应的值中,AGTGroup, FTSGroup,SQLGroup三个值可以设成同一个
5. 重新尝试更新
c.
问题状态:
=======
结案