The XP SP3 / MSXML6 SP2 / SQL Server debacle

I see fingers pointing all over the place.  The Windows team blames the SQL team for making setup packages that can't bypass when a newer version of a file already exists on the target system.  The SQL team blames Windows for unceremoniously plopping the core MSXML files into the Windows Protected Files bucket.  Both point fingers at end users who install English versions of SQL Server on German and Italian versions of the operating system, a scenario which is almost unanimously blamed for the problem.

Can't we all just get along?  Fault is irrelevant.  A lot of people are stuck here; they can't install SQL Server or a SQL Server update on XP SP3, and the error messages leave them in a real state of head-scratching.  Error messages include the following:

 
This package is not supported on this operating system.
SkipInstallCA. Return value 3.
 
Fatal error during installation
MainEngineThread is returning 1603
 
Error code 1603
Product: MSXML 6.0 Parser (KB933579)
Installation failed.

For other potential error messages and more details on the problem, you can see Connect item #361660.

Ideally setup would detect the existence of a newer file, and just bypass that portion of the install; however, quite simply, this is a new development, and obviously wasn't a testable issue before XP SP3 was released (which is why there is little blame on the SQL Server 2008 and early SQL Server 2005 issues, but little excuse for the SQL Server 2005 SP3 edition of the problem).

Sure, you can call Product Support Services, and they can swipe your credit card.  Then they will walk you through a two-minute workaround and, after trying to indirectly convince you that they deserve to keep your money, will reluctantly refund you, since it is a problem they introduced.  But here is another workaround that might actually work until they fix the problem.

  1. download and install the Windows Installer Cleanup Utility.  Yes, the installer is a little confusing, as it is painted with all kinds of bitmaps involving antique versions of Microsoft Office.  Just install it and don't let these old logos scare you.  It really is a useful tool both in this case and for removing pesky SQL and VS installs that just won't go away (or are not even offered) via Add/Remove Programs / Programs and Features.
     
  2. launch the utility (it is tough to find at first, Start > All Programs > Windows Install Clean Up), find MSXML6 SP2 in the list, select it, and click remove.  It may not prompt you to reboot here, but I suggest that you do anyway.
     
  3. attempt the SQL Server 2005 / 2008 / SP / CU install again.
     
  4. if SQL Server installs successfully, then reinstall MSXML6.  This may fail (target version is newer than the source, imagine that!) depending on which version of SQL Server you installed, and which components.  In either case, obtain the critical update from KB #954459, which you can get in Security Bulletin MS08-069.  Just search for your operating system and the download for "Microsoft XML Core Services 6.0
."  Run this installer and you should be all up to date as far as MSXML6 goes.

If this process does not work (e.g. you still have problems installing SQL Server at 3.), check the setup logs and verify that MSXML6 really is still the issue (you may have fixed one problem only to reveal what would have failed next anyway). 

If MSXML6 is still the issue, then another workaround you can try is to remove XP SP3, install the SQL Server 2005 / 2008 / SP / CU, and then apply XP SP3 again.  If feasible, use the same language edition of SQL Server as the locale of your operating system (I realize that this is not always convenient).

Hopefully, by the time there is another SP for SQL Server, they will have fixed this mess, regardless of who is to blame.

Aaron Bertrand

I am a passionate technologist with industry experience dating back to Classic ASP and SQL Server 6.5. I am a long-time Microsoft MVP, write at SQLPerformance and MSSQLTips, and have had the honor of speaking at more conferences than I can remember. In non-tech life, I am a father of two, a huge hockey and football fan, and my pronouns are he/him. If I've helped you out, consider thanking me with a coffee. :-)

77 Responses

  1. Russ Thomas says:

    I don't care how old this post is… saved my bacon tonight.  Trying to replace a 2008 cluster node that went bad, got this same issue.  The cleanup utility is no longer available at Microsoft, but installing MSXML over the top, uninstalling, and then reattempting node addition worked.

  2. Vaibhav P says:

    Hii Aaron first of all Thanks a lot for the clear instructions that fixed problem in minutes that was stuck for quiet few days.I required SQL 2005 to be installed to use some Tool software and essential part of work your instruction helped me a lot!

  3. Giusi says:

    Thank you Aaron, you really helped me to solve the problem. Hope life will give it back to you! šŸ™‚

  4. Friedrich Brunzema says:

    If you are a C# programmer, you can use the following code – which does essentially what is described above/
    internal static void DeleteLeftOverMsxmlRegistryEntriesIfPresent()
    {
    try
    {
    Registry.LocalMachine.DeleteSubKeyTree(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1A528690-6A2D-4BC5-B143-8C4AE8D19D96}");
    }
    catch{}
    try
    {
    Registry.ClassesRoot.DeleteSubKeyTree(@"Installer\Products\096825A1D2A65CB41B34C8A48E1DD969");
    }
    catch{}
    try
    {
    Registry.LocalMachine.DeleteSubKeyTree(@"SOFTWARE\Classes\Installer\Features\096825A1D2A65CB41B34C8A48E1DD969");
    }
    catch{}
    }

  5. Tony C. says:

    Mike V., your fix worked for me.  All previous fixes failed on this particular machine. Really appreciate the post.

  6. Mike V. says:

    After searching for hours trying to find a fix i finally gave up. i figured out if you are on XP sp3 you can install Sql 2005 what i did was found the registry Key in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows then i changed the "CSDVersion" from 300 (SP3) to 200 (SP2) rebooted the machine installed Sql 2005 then ran the sql 2005 sp3 update and all ran just fine then changed the registry key back and rebooted the machine. I have installed 18 machines this way and have not had any issues.    

  7. Brandon Peterson says:

    So, since Microsoft has pulled the clean-up util is there another solution for this.  Unfortunately we can only go as far as something Microsoft Provides as a fix.  I could direct our customers to a potential solution but we cannot assist at that point.  It would be nice if Microsoft had a solution.
    Thanks,
    Brandon Peterson

  8. Brandon Stricker says:

    Great post! I happened to have a copy of the Windows Install Cleanup utility handy and force-removing MSXML6 did the trick. Thanks again.
    – B

  9. SJ says:

    msicuu2.exe is no longer available to download.  Since it solved the problem I guess that Microsoft had to remove it.  Typical.  Ideas?
    http://support.microsoft.com/kb/290301

  10. Vlad says:

    You are the best. Worked like a charm! Great instructions easy to follow šŸ˜€ Microsofts instructions are totaly useless and complicated.

  11. Robo says:

    MS SQL is the worst database available in market

  12. kunal says:

    microsoft is stupid

  13. David Chin says:

    Great Great Info.. !!

  14. JonRees says:

    Aaron – Many many thanks for this guidance – it solved my problem installing Mamut startup instantly. It still shouldnt be necessary however !!

  15. AaronBertrand says:

    Look, I agree that sometimes bugs are embarrassing and downright unacceptable.  But on the flip side, please list one perfect software company – just one.  The plus side is that when issues like this occur, the community can help right the ship.

  16. Ralph Andersson says:

    Hahaha..
    So this is Enterprise Software. What a joke!

  17. Fanya says:

    Thanks a lot Aaron, you made my day and saved me from getting fat from hours and days of frustration! I struggled for a week trying to get to install SQL Server and failing because of this stupid "Error Signature MSXML 6 Servece Pack 2" Eventually I found your article and HURRRA!!!! – it was like pure magic – I felt like a princess in a fairy tail – Thanks, Thanks and Thanks a lot – You are the Best.

  18. Rex Gibson says:

    I had a slight variation on this problem. MsiZAP could not delete the keys — Permission denied.
    1) MSI ZAP if you have installed Windows Installer CleanUp Utility
    Should be located here: C:\Program Files\Windows Installer Clean Up
    When I ran command prompt:
    C:\Program Files\Windows Installer Clean Up\MsiZap T {1A528690-6A2D-4BC5-B143-8C4AE8D19D96}
    I received error that access was denied.
    I rebooted in safe mode and received the same error.
    * I then opened up windows explorer (in safe mode but I bet this could be done "normally")
    * Navigated to C:\WINDOWS\Installer\
    * Right Clicked on folder {1A528690-6A2D-4BC5-B143-8C4AE8D19D96} >> Properties >> Security >> and clicked on "advanced" button
    * In the Advanced window, I checked the "Replace Permission Entries…" and then clicked on apply.
    * Reran msizap.
    Worked Like a charm.

  19. JD says:

    That worked.  Thanks.  I did not have to uninstall sp3.  I removed msxml 6 sp2 using the microsoft too but that was not enough.  I installed msxml core 6.0 msi and sp 1 msi.  Then, I retried Sql server 2005 and it was able to put msxml 6 sp2 on without issue.  What an ordeal.

  20. David says:

    Aaron, thanks, I had just invested several hours on a Sunday afternoon trying to figure out what was going wrong, when I should have been working on something else.  I googled it, found your blog, and removing MSXML 6 worked great. You rock.
    As for Microsoft costing several hours of my time because some product manager doesn't think it is important to fix this problem, well that is how Microsoft earns its bad reputation.

  21. Ben says:

    Oh man!  Thanks!  I was trying to fix that damn failed XML, but couldn't figure out how to uninstall it.  That little tool is cool.

  22. Bill Miller says:

    Thanks Aaron.  This saved the day.  I thought I would never get SQL 2005 back on my XP machine.  But this worked.

  23. John McMillion says:

    Thank you!  You saved the day!!  =)
    John

  24. Ivana says:

    Thank you very much, you help a lot.
    I've lost two whole hours tring to figure out what the hell is going on until I decided it's time to go online.
    And all this for features that a true dba is trying to avoid using in his databases in the first place.
    Anyway, thanks a lot….

  25. Nick says:

    Great suggestion Aaron! I uninstalled MSXML6 sp2 and the install worked like a charm!

  26. Ross says:

    Duh – sorry about the typo …should of course be Aaron! No edit function!

  27. Ross says:

    Thanks a lot, Aaaron. Will follow up your links and recomendations.
    Cheers!
    Ross

  28. AaronBertrand says:

    Ross, I'm pretty sure it's essential for some programs other than SQL (IE, maybe Office too), and to be quite honest, you're not going to save a lot of disk space getting rid of it.  Some much better, low-hanging fruit:
    http://www.geckoandfly.com/2009/04/26/remove-windows-xp-update-backup-files-recover-and-increase-disk-space/
    http://www.go4expert.com/forums/showthread.php?t=4278
    Also get this download and read the "cleaning Windows" section:
    http://www.tweakguides.com/TGTC.html

  29. Ross says:

    Hi. This is not strictly on topic (ie: I don't even know what SQL is!), but is related to MSXML6. I am running short of HD space and am getting rid of applications I don't need. I have XP Home.
    Can I delete MSXML6 without affecting my computer's functioning, please? I've googled to find out what MSXML6 actually is, but can't understand the tech talk. All I need to know is do I need to keep this program (or whatever it is)?
    Cheers!

  30. andy says:

    Worked for me, what a funny error, it complains that win xp sp3 is an unsupported OS, haha. I take it that windows installer clean-up actually just calls Msizap with the correct GUID.

  31. Miles says:

    http://support.microsoft.com/kb/968749.
    just responds with "Server is too busy" I have never experienced this with a microsoft site before. Has anyone got any idea what is a good time to try (a Quiet period)

  32. Greg Balajewicz says:

    the uninstall MSXLM6 via the cleanup utility worked BUT!! i got the blue screen when booting after the uninstall. Only lanuching windows in last known good configuration worked.

  33. Andy Sutorius says:

    Thanks for the help on this Aaron!

  34. AaronBertrand says:

    Why not publish the registry change that can allow ISVs who ship Express with their products to bypass the problem programmatically?  The problem isn't that they have to call CSS, regardless of whether or not it is free.  The problem is that *their* customers call *them* and they have to spend *their* support time walking each of their customers through the issue.  šŸ™

  35. @MicrosoftSQLCSS says:

    http://support.microsoft.com/kb/968749.  We won't charge customer's to walk through this issue.  This is the official source to workaround this problem.  We are looking at getting a more robust solution.

  36. Allyson says:

    Thank you!

  37. Nikhil says:

    Found your blog after digging through several google searches. Followed your directions up on top, and hey it worked!
    Thanks!

  38. Cod3 Monk3y, Inc. says:

    Thanks Aaron.
    I encountered this problem while installing an upgrade to v3.1.3 for my Neat Receipts scanner. I am on XP SP3. I used the utility to remove KB954459 from my system. I'm going off of "The Real… Issue" comments that KB954459 is in-band in XP SP3 and I am not going to re-install KB954459. If you do not hear back from me, you can assume I have had no other problems!
    Cheers, and thanks again!
    /cm

  39. Raj Gohil says:

    This was really good solution.
    Thanks

  40. Jim Lawson says:

    If you tried removing MSXML in normal mode and were not successful and you running XP Home Edition, then you need to reboot in safe mode (F8) logged in as "Administrator" only (not as your User Name with administrator rights, or Admin).  
    Then use the Windows Install Cleanup Utility (Msicuu2.exe) to remove the MSXML 6.0 Service Pack 2. It should be successful in removing it where as it didnt in regular mode this is because Home edition has different permissions rights than Pro or Enterprise.

  41. Dave says:

    Finally, a solution for this annoying problem!  Thanks Aaron!

  42. NSK says:

    Awesome Aaron.. The solution is excellent and could complete the installation in no time

  43. WB says:

    This worked! Awesome- Thanks

  44. Daniel Kurland says:

    BFritz,
    {Turns out the Windows Installer CleanUp Utility is just a front end for a little command line app called MsiZap (which is installed in the same folder) MsiZap works off the product code which is "MsiZap T {1A528690-6A2D-4BC5-B143-8C4AE8D19D96}" no more broken installs… we had to add that into our installshield process before SQL.}
    This seems like a good work around for the SQL problem.  I was wondering if you could give me step by step instructions of how to run msizap from the commandline.  If you could I would really appreciate it.  I am on like 15 boards with my own posts searching for solutions, and about 6 hours into Microsoft technical support.  It took about 4 hours to convince them that this was an issue.  However, they still have no fix for me.  
    If you could do it step by step.  Pretend I am stupid, which is pretty much how I feel chasing all of these different workarounds unsuccessfully.
    I want to add it to an existing installer package.  Ideally, I'd like to install msizap without the cleanup utility and have it run and remove the broken install, all without the enduser being aware.
    Is this possible?
    Thank you so much!

  45. AaronBertrand says:

    Some unsupported workarounds that might be a better approach than the cleanup utility:
    http://is.gd/q6Lv
    http://is.gd/q6MT

  46. Sverker says:

    Good points and thanks for the help!

  47. Dan says:

    Thank you thank you thank you thank you THANK YOU!!!! I'M NOT WORTHY!

  48. AMJ says:

    i was having problem since last week
    this is what i was looking since i got this problem
    thankx a lot =)

  49. Dave says:

    Great stuff, thanks for taking the time to blog this. Saved us a whole heap of trouble!

  50. MF says:

    I appreciate your help with this matter.  I have been researching on and off for a few months now and using the Cleanup utility did it for me.  In my case, I just had a corrupted msxml6.dll, and was not able to uninstall it from Add/Remove.  As soon as I uninstalled with the cleanup utility, I was able to install SQL Server 2005 without further issues.

  51. Eric says:

    I'm one of the lucky ones this fix helps.  Getting really frustrated until I came across this the MSICUU2 use solved the problem instantly. Saved my machine leaving the building through a window!

  52. AaronBertrand says:

    Quite frankly, removing SP3 might be a last resort option.  I think it is clear in the blog that this might be required if all of the previous recommendations failed.  Thankfully this seems to be a rare case, but I have seen forum threads indicating that sometimes this "big hammer" *is* required.

  53. The Real XP SP3 SQL 2K5 MSXML6 Issue says:

    -0.) This relates to SQL 2K5 setup failures.
    0.) You should NOT need to uninstall XP SP3 to get SQL setup to work.  Aaron, it would be great for you to remove that from the blog above because that's a big hammer that is not required.  
    1.) The transition from XP SP2 + MSXML6 (KB954459) (version 1099) and then upgrade to XP SP3 leaves the system in a dirty state.  I.e. ARP (add remove programs) shows MSXML6 (KB954459) installed but attempting to uninstall it will result in failure because KB954459 was built to know that MSXML6 is in band in XP SP3 but woops, didn't account for the upgrade from XP SP2 + KB954459 to XP SP3 transition.  SQL Server 2K5 SP3 calls the KB954459 MSXML6 installer (from the MSI cache) on XP SP3 resulting in the same failure which halts SQL install.  A mouthful, I know.
    2.) MSXML6 is in band in XP SP3 so you should not ever need to install it again after cleaning the bad state.
    So how do you get clean?  
    http://support.microsoft.com/kb/290301 and specifically the windows installer cleanup utility http://download.microsoft.com/download/e/9/d/e9d80355-7ab4-45b8-80e8-983a48d5e1bd/msicuu2.exe
    As Aaron mentions above.  That will remove the ARP entry from your system but at the same time leave MSXML6 1099 in system32.  You can then install SQL with no issues.

  54. Frank says:

    Thanks for the MSICUU2 suggestion, Aaron.  It worked like a champ on this end.

  55. Charles S says:

    I'm not a developer, so I could not find MsiZap on my PC. So, for the benefit of others not as technical as you folks, here is what I had to do (yes, I know there must be an easier way):  1) downloaded and started the installation of Windows SDK for Windows Server 2008 and .NET Framework 3.5 from Microsoft.  I didn't wait for the whole thing to install because I'm impatient… as soon as MsiZap showed up in a windows search, I ran it in a command prompt with the code listed above by Bfritz.  It worked fantastic.  Then I cancelled the installation of the SDK.  Messy, but I can finally de-stress.  Thank you!

  56. Warren says:

    Great Work Bfritz , worked like a charm.
    Thanks

  57. Warren says:

    Great Work Bfritz , worked like a charm.
    Thanks

  58. Warren says:

    Great Work Bfritz , worked like a charm.
    Thanks

  59. Warren says:

    Great Work Bfritz , worked like a charm.
    Thanks

  60. Loc says:

    Thank You for the work around!

  61. Scott says:

    THANKS

  62. John says:

    Hey BFrit – that is quite an interesting workaround using "MsiZap T {1A528690-6A2D-4BC5-B143-8C4AE8D19D96}".    I think that should be just a temporary solution, ie the unintall MSXML 6.0 SP2.  The real solution will be for MS to re-release the SETUP.exe for SQL EE which does not bomb on MS XML 6.0 SP2.  

  63. JYD says:

    Very nice tip.
    Finally I got my new SQL 2008 x64 Ent. Ed. Italian installed on Win Server 2003 R2 x64 Italian.
    I would suggest to launch "msiexec /unregister" followed by "msiexec /regserver" if annoying msi related errors or warning appears in event viewver before install SQL server.

  64. Sal says:

    Thanks Alot!
    works great

  65. BFritz says:

    John, We have the same issue with our product being packaged with SQLE2005 and our software installs crashing all around us, we needed a fix for this now! and could not wait for the Windows or SQL team to fix it! What we had to do was the following, turns out the Windows Installer CleanUp Utility is just a front end for a little command line app called MsiZap (which is installed in the same folder) MsiZap works off the product code which is "MsiZap T {1A528690-6A2D-4BC5-B143-8C4AE8D19D96}" no more broken installs… we had to add that into our installshield process before SQL.

  66. AaronBertrand says:

    Brad, which package did you try to install?  The one from http://www.microsoft.com/technet/security/Bulletin/MS08-069.mspx or the one from http://www.microsoft.com/downloads/details.aspx?familyid=993C0BCF-3BCF-4009-BE21-27E85E1857B1 ?  Whichever you tried, try the other.
    If neither works, I think someone with a little more knowledge about MSXML6 (e.g. Microsoft Support) would have to review the logs and/or your system config to determine why it won't install.

  67. Brad says:

    I was able to finally get SQL Server 2005 to install, but MSXML 6 SP 2 will not re-install. It says the installation was interrupted prior to completion and I should run setup later. I've tried rebooting and running the install again, but no luck. SQL Server 2005 seems to be running fine. Any thoughts on how I can get MSXML 6 SP 2 to re-install?

  68. AaronBertrand says:

    Roger,
    Believe me, I would share it if I had it.  I am awaiting for more details from an internal contact, including the actual workaround, and whether or not I can share it before they post something official.  Currently the company standpoint is to go through support, and in your case, you could call once and you'd have the workaround for all 50 clients.  The call won't cost you anything because it's a bug.  Neither fun nor ideal, but ultimately better than the more elaborate "fixes"…

  69. Roger Gooden says:

    Can you tell us the 2 minute workaround support provides on the phone?  We are one of those who distrubute a software package and this looks like it could become a support nightmare.  If we get 50 new clients, am I going to have 50 calls coming in that our software doesn't work?  Was XP SP3 pushed out to all I assume?  Who to blame, I don't care but please MS get us a fix ASAP.

  70. AaronBertrand says:

    John, I agree.  I'm trying to help as many people as I can while MS works on a fix; obviously there are people for whom the workaround is inadequate.

  71. John says:

    The workaround is an unacceptable solution for those of us who embed SQL 2005 Express Edition into custom software distributions.  

  72. matthew says:

    thanks for the instructions!
    this really works