Installation of Service Pack 3 for Reporting Services 2005 fails on a cluster with an error code 2228

The setup of the Microsoft products is considered to be extremely easy. Mostly one need to click on few "Next" buttons and the setup is done. But when the setup fails, it can be extremely interesting. I encountered one such interesting setup failure. The installation of the SQL Server service pack 3 was failing for the reporting services component.

We were trying to install SQL Server 2005 service pack 3 and it got successfully installed for all the components except for "Reporting Services". The environment was as follows:

Operating System:

Windows Server 2003 Enterprise Edition

Windows Cluster:

Windows Cluster

Node1 : ABC1

Node2 : ABC2

Cluster Name: WINCLUS

SQL Server:

SQL Server 2005 Enterprise Edition

Build: 9.00.3073

SQL Cluster

Node1 : ABC1

Node2 : ABC2

Cluster Name: SQLCLUS

Reporting Services:
Reporting Service 2005 Enterprise Edition
Build: 9.00.3042
Installed on both the nodes but configured only on ABC1

When we tried installing the service pack 3 for reporting services, we got the following errors:

From Summary.txt

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

Product : Reporting Services (ABC1)

Product Version (Previous): 3042

Product Version (Final) :

Status : Failure

Log File : C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Hotfix\RS9_Hotfix_KB955706_sqlrun_rs.msp.log

Error Number : 2228

Error Description : MSP Error: 2228 The installer has encountered an unexpected error. The error code is 2228. Database: . Unknown table ' _sqlDomainGroup' in SQL query: SELECT `Property`, `Component_`, `RestoreProperty`, `Service`, `ServiceName` FROM ` _sqlDomainGroup` ORDER BY `Order`.

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

From RS9_Hotfix_KB955706_sqlrun_rs.msp.log

<EndFunc Name='SetCAContext' Return='T' GetLastError='0'>

Doing Action: Validate_ServiceAccounts

PerfTime Start: Validate_ServiceAccounts : Fri Oct 02 19:31:39 2009

<Func Name='Validate_ServiceAccounts'>

MSI (s) (F4!40) [19:31:39:273]: Note: 1: 2205 2: 3: _sqlDomainGroup

MSI (s) (F4!40) [19:31:39:273]: Note: 1: 2228 2: 3: _sqlDomainGroup 4: SELECT `Property`, `Component_`, `RestoreProperty`, `Service`, `ServiceName` FROM ` _sqlDomainGroup` ORDER BY `Order`

<Func Name='GetServiceAccountProperty'>

Error Code: 0x8007064f (1615)

Windows Error Text: SQL query syntax invalid or unsupported.

Source File Name: darlib\viewinstaller.cpp

Compiler Timestamp: Sat Oct 25 08:45:48 2008

Function Name: sqls::ViewInstaller::open

Source Line Number: 62

---- Context -----------------------------------------------

Failed to open installer view

1: 2228 2: 3: _sqlDomainGroup 4: SELECT `Property`, `Component_`, `RestoreProperty`, `Service`, `ServiceName` FROM ` _sqlDomainGroup` ORDER BY `Order`

MSI (s) (F4!40) [19:31:39:304]: Transforming table Error.

MSI (s) (F4!40) [19:31:39:304]: Note: 1: 2262 2: Error 3: -2147287038

MSI (s) (F4!40) [19:31:39:351]: Note: 1: 2262 2: Error 3: -2147287038

MSI (s) (F4!40) [19:31:39:351]: Transforming table Error.

.

.

MSI (s) (F4!40) [19:31:39:351]: Note: 1: 2262 2: Error 3: -2147287038

MSI (s) (F4!40) [19:31:39:351]: Product: Microsoft SQL Server 2005 Reporting Services -- Error 2228. The installer has encountered an unexpected error. The error code is 2228. Database: . Unknown table ' _sqlDomainGroup ' in SQL query: SELECT `Property`, `Component_`, `RestoreProperty`, `Service`, `ServiceName` FROM ` _sqlDomainGroup ` ORDER BY `Order`.

Error 2228. The installer has encountered an unexpected error. The error code is 2228. Database: . Unknown table ' _sqlDomainGroup' in SQL query: SELECT `Property`, `Component_`, `RestoreProperty`, `Service`, `ServiceName` FROM ` _sqlDomainGroup` ORDER BY `Order`.

<EndFunc Name='LaunchFunction' Return='1615' GetLastError='0'>

MSI (s) (F4:8C) [19:31:39:351]: Transforming table InstallExecuteSequence.

MSI (s) (F4:8C) [19:31:39:351]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038

.

.

Action ended 19:31:39: Validate_ServiceAccounts.D20239D7_E87C_40C9_9837_E70B8D4882C2. Return value 3.

What does this error mean?

If you look carefully, the install is failing when trying to run a MSI query SELECT `Property`, `Component_`, `RestoreProperty`, `Service`, `ServiceName` FROM ` _sqlDomainGroup` ORDER BY `Order`. This is what we call a “custom action” in setup. Depending on the component/feature, configuration etc, different custom actions are chosen by setup. Now as you know Reporting Services is NOT a cluster-aware component. So, why is SQL setup trying to look for a “Domain Group” when it’s a stand-alone component.

This got me thinking whether RS has some cluster related entries. So I looked at SQL RS registry hive in HKLM\SOFTWARE\Microsoft\Microsoft SQL Server.

As suspected, the root cause for the setup to fail and to generate these error messages is a Registry key. The key is called “Cluster” and it would be located at “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X". Here MSSQL.X would be the reporting services folder. When this registry key is present, the setup would treat the SQL component as clustered and would try to run cluster specific custom actions. Since reporting services is a standalone component and is not cluster aware, the existence of the key “Cluster” would cause the setup to execute the cluster specific custom actions for reporting services and these custom actions would fail as Reporting services is not cluster aware.

The only way to get the service pack to install successfully is to delete the “Cluster” key from the above mentioned location. Once the key gets deleted, the service pack 3 should get installed fine.

Note: Please make doubly sure that the “Cluster “ key you are removing is for reporting services and not for Database/Analysis Services. If removed incorrectly this can break other instances. You can confirm this by looking at the key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names and map the component to corresponding MSSQL.X

Gurpreet Singh
Support Engineer, Microsoft SQL Server

Reviewed By,
Sudarshan Narasimhan
TL, Microsoft SQL Server