Installing Hotfix on SQL Server may throw error 29538 and fail

In this case we were installing hotfix https://support.microsoft.com/?kbid=960089

Microsoft SQL Server 2005 Service Pack 2 Cumulative Hotfix 3077

 

The Hotfix Setup would rollback. You will see the below error in the Hotfix.log file

 

06/24/2009 16:15:38.994 MSP Error: 29538  SQL Server Setup did not have the administrator permissions required to rename a file: d:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mssqlsystemresource1.ldf. To continue, verify that the file exists, and either grant administrator permissions to the account currently running Setup or log in with an administrator account. Then run SQL Server Setup again.

 

Now if you peep into the Data folder you would see a mssqlsystemresource1.ldf and mssqlsystemresource1.mdf file which were supposed to be renamed.

It obviously looks like a Permission issue.

Running a Procmon would give you the below result. An access denied on the resourcefile.

 

MsiExec.exe SetRenameInformationFile  D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource1.ldf         ACCESS DENIED                ReplaceIfExists: True, FileName: D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.ldf                C:\WINDOWS\system32\MsiExec.exe   Computer\User

 

Running Process explorer would show SQLServer having the handle to the Mssqlsystemresource file

If you look at the SQL Server Error logs you will see that SQL Server is running while the Setup is trying to rename the MssqlSystemResource files. This would give and obvious Access Denied error.

 

SQL Error Log

2009-06-24 16:14:54.18 spid5s Starting up database 'mssqlsystemresource'.

Hotfix.log

06/24/2009 16:15:38.994 MSP Error: 29538

 

Cause

========

When we look into the log file SQL9_Hotfix_KB960089_sqlrun_sql.msp,

You will see before the FileRename function call, there is a call to start the SQLWriter service.

In this case SQL Writer was dependent on SQL Service and when Setup would start SQL writer the Service Control Manager would start the SQL Service before and this was the root cause for the file rename to fail.

 

Repro

======

Add SQLSErver as dependency for SQLWriter. Then tried to install the hotfix and it failed with the same error

sc config "SQLWriter" depend= "MSSQLSERVER"

 

Now install the hotfix and it should fail

 

Resolution.

===========

Method 1:

Remove the dependency by running

sc config "SQLWriter depend= ""

 

Method 2:

1. Look in the SQL9_Hotfix_KB960089_sqlrun_sql.msp file you will see that the function "Do_sqlFileRename" being called to rename the Resource database

2. Create a System Variable named SqlStop and the value as Do_sqlFileRename

3. Run the hotfix. The setup would halt and prompt you when it starts the function "Do_sqlFileRename"

4. Now go to the services panel and stop SQL Server. (You should see a prompt to stop the dependent services as well)

5. Continue the Setup Prompts to finish the installation

 

 

Levi Justus,

TL, Microsoft SQL Server