I had encountered an issue while installing a SQL Server service pack. The resolution for it was to replace the existing SQL Server binaries from that of a Service Pack. To extract the contents of a Service Pack executable we need to just type “ServicePackExeName /extract” as I explained in this post.
I was looking for the sqlservr.exe but it wasn’t directly available in the extracted folder. The folder structure looked something like this.
From my past experience I knew that the Service Pack installer would copy sqlservr.exe by extracting sqlrun_sql.msp file.
Now how do I get the sqlservr.exe from the .msp file? The command “sqlrun_sql.msp /extract” wouldn’t work here.
One of the options is to extract the contents of the .msp file using a file archiver like 7-zip. After extracting the contents, look for a file which has the name CAB in it. In this case, the file name is “PCW_CAB_Family01″.
Again extract this file to a folder and the contents would look something like this.
Now just rename the sqlservr.exe.******** to sqlservr.exe. That’s all. You have just extracted the requisite file from an .msp file.
The other alternative is to use the MsiX utility by Heath Stewart. The usage of this tool is very straight forward. Just type the following command in the Command Prompt and it would extract the contents of the .msp file
MsiX sqlrun_sql.msp
After this navigate to the folder where the file was extracted and extract the contents of the *CAB* file.
Follow the same steps and rename the file that you need (sqlservr.exe.****) to the requisite file.
Mission accomplished!