Counter of Festivals

Ashok Blog for SQL Learners and Beginners and Experts

Monday, 27 June 2016

Solving Missing MSI or Solving missing MSP files during Installation or Upgrade in SQL Server

How to Resolve missing MSI or MSP packages during SQL Server Service Packs, Hotfix or Cumulative Updates

Ref:

http://shashanksrivastavasqldba.blogspot.in/2012/11/how-to-resolve-missing-msi-and-msp.html

http://www.sqldbadiaries.com/2010/07/15/how-to-resolve-missing-msi-or-msp-packages-during-sql-server-service-packs-hotfix-or-cumulative-updates/

http://shashanksrivastavasqldba.blogspot.in/

 How to resolve missing MSI and MSP files error while patching SQL SERVER

Many times while patching SQL SERVER we have come across issues of missing MSI and MSP files. Lets get an in depth details of what there files are and how to resolve this issue.

Q 1. What are these MSI and MSP files ?

MSI files are those SQL files that are shipped with the RTM verison or base version  of SQL server.

They can be find by navigating to x64 -> Setup folder in your installation media if you are searching for 64 bit or x86 -> Setup folder if the search if for 32 bit files.

MSP files are those SQL files that are shipped with the SQL SERVER patches are they are not related to base verison.

For viewing the files extract the Service pack and navigate to  x64 -> Setup folder in your extracted files if you are searching for 64 bit or for 32 bit extract service pack for 32 bit and navigate to  x86 -> Setup folder if the search if for 32 bit files.




 Example -  Setup failed for Sqlrun_sql.msi file
For viewing the error go to C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log location and search for the latest logs.
Open the log file and you can view details in the log, looking similar like below log.
MSI (c) (AC:D0) [17:45:28:483]: Resetting cached policy values
MSI (c) (AC:D0) [17:45:28:483]: Machine policy value 'Debug' is 0
MSI (c) (AC:D0) [17:45:28:483]: ******* RunEngine:
******* Product: {4D28EFCF-5999-44D2-8D4E-AC643E76C33F}
******* Action:
******* CommandLine: **********
MSI (c) (AC:D0) [17:45:28:483]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (AC:D0) [17:45:28:483]: Grabbed execution mutex.
MSI (c) (AC:D0) [17:45:28:515]: Cloaking enabled.
MSI (c) (AC:D0) [17:45:28:515]: Attempting to enable all disabled priveleges before calling Install on Server
MSI (c) (AC:D0) [17:45:28:530]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (D0:F8) [17:45:28:546]: Grabbed execution mutex.
MSI (s) (D0:F4) [17:45:28:546]: Resetting cached policy values
MSI (s) (D0:F4) [17:45:28:546]: Machine policy value 'Debug' is 0
MSI (s) (D0:F4) [17:45:28:546]: ******* RunEngine:
******* Product: {4D28EFCF-5999-44D2-8D4E-AC643E76C33F}
******* Action:
******* CommandLine: **********
MSI (s) (D0:F4) [17:45:28:546]: Machine policy value 'DisableUserInstalls' is 0
MSI (s) (D0:F4) [17:45:28:546]: Adding MSIINSTANCEGUID to command line.
MSI (s) (D0:F4) [17:45:28:546]: Warning: Local cached package 'C:\WINDOWS\Installer\258fh9.msi' is missing.

Issue :- The very first error I see in the above log is Local cached package 'C:\WINDOWS\Installer\258fh9.msi' is missing. This file 258fh9.msi is the cached msi file for sqlrun_sql.msi i.e. the main installation (RTM) of an instance of SQL Server Database Engine. During installation of RTM product, ..\Servers\Setup\SqlRun_SQL.msi is cached to %windir%\Installer folder for future use such as un-installation etc. Cached file has a different name which is a randomized alphanumeric name generated by the installer , this is because if you have multiple instances then multiple ‘Sqlrun_sql.msi’ has to be cached and hence a name conflict may occur.

Resolution :-

Step 1:- Open REGEDIT.

Step 2 :- Navigate to

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\<GUID>\InstallProperties

Here GUID is :- 4D28EFCF-5999-44D2-8D4E-AC643E76C33F

Now look for value of Local Package.

Step 3 :- Now that we knew 'C:\WINDOWS\Installer\258fh9.msi' is missing , we need to put it back to C:\Windows\Installer. To do so , locate the file from the  installation media of SQL Server , copy Servers\Setup\SqlRun_SQL.msi and paste it into C:\Windows\Installer , rename it to the cached filename , in our case we have to rename it to 258fh9.msi.

Now re-run the setup and it will execute successfully.


For Resolving the MSP file errors follow the below steps :-

1. Check the Product GUID from the log.
2. Check the Patch GUID from the log.
3. Open regedit
4. Navigate to below path

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\<GUID>\Patches\<PatchCode>

Where GUID and Patch Code will be gathered from logs.

5. Then see the Display name and it will give the name of the service pack whose file is missing.

6. Extract the same service pack.

7. Copy the missing file and replace it by the number.msp where number can be seen in the errorlog.

If yor are not able to find the number then navigate to

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\<PatchCode>

And search for the patch code from the error log, and under local package you can see the filenumber.msp. Replace the file with the same number and run the setup again.




Example 2:

Recently while installing SQL Server 2005 Service Pack 3, the database engine was failing with the below error.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Opening existing patch 'C:WINDOWSInstaller604638.msp'.
Opening existing patch 'C:WINDOWSInstaller2436c921.msp'.
Note: 1: 2203 2: C:WINDOWSInstaller2436c921.msp 3: -2147287038
Couldn't find local patch 'C:WINDOWSInstaller2436c921.msp'. Looking for it at its source.
Resolving Patch source.
User policy value 'SearchOrder' is 'nmu'
User policy value 'DisableMedia' is 0
Machine policy value 'AllowLockdownMedia' is 0
SOURCEMGMT: Media enabled only if package is safe.
SOURCEMGMT: Looking for sourcelist for product {B1EC4291-AC52-4A63-9EF8-8D96D02951AC}
SOURCEMGMT: Adding {B1EC4291-AC52-4A63-9EF8-8D96D02951AC}; to potential sourcelist list (pcode;disk;relpath).
SOURCEMGMT: Now checking product {B1EC4291-AC52-4A63-9EF8-8D96D02951AC}
SOURCEMGMT: Media is enabled for product.
SOURCEMGMT: Attempting to use LastUsedSource from source list.
SOURCEMGMT: Trying source z:aa4e64694ced45343273dfHotFixSQLFiles.
Note: 1: 2203 2: z:aa4e64694ced45343273dfHotFixSQLFilessqlrun_sql.msp 3: -2147287037
SOURCEMGMT: Source is invalid due to missing/inaccessible package.
From the error message it is obvious that the SP installer is looking for a .msp file which is missing from the original location. Always when installing an application or a service pack, the Windows installer will cache a copy of the .msi/.msp file in C:WINDOWSInstaller folder. Sometimes in a hurry to clear up space on C drive, System Administrator might delete some of the files in this folder. There is no error while deleting, but the actual problem comes up when installing the hotfix/service pack related to the deleted file’s product. Even in this case someone has accidentally deleted one of the .msp file.
How to resolve this issue?
The installer is unable to find C:WINDOWSInstaller2436c921.msp which is in turn sqlrun_sql.msp (available in the error log). Note the file extension which is MSP (Microsoft Patch). Now we need to find this sqlrun_sql.msp from the last installer patch’s installer and paste it as 2436c921.msp in C:WindowsInstaller.
Suppose we have SP2 on this instance, we need to download the SP2 binary on the local machine. Open command prompt and type
PathOfSP2SP2ExeName /extract
When prompted give the path of the folder where we want to have the files extracted. Copy the .msp file to C:WindowsInstaller folder and name it appropriately.
If an .msi file is shown as missing from C:WindowsInstaller in the log, the file needs to be copied from the SQL Server installer CD and copied as in the case of .msp file.
After following these steps, the SP3 installation completed successfully!
If the log shows many such files are missing instead of doing this manually, the script found at Microsoft Support site comes in handy.
But prevention is always better than cure. Always use the MSIZAP tool provided by Microsoft to delete orphaned installer files and be safe! This utility caused some irreversible issues to other applications in some occassions. Hence Microsoft does not recommend using this tool and it has been removed from the Download page. If the files in c:windowsinstaller folder cause space issues, it is better to “move” those files to a safe location and copy them back if you run into any issues.