I was trying to install the WSUS 3.0 SP2 patch when it gave me a very non-descriptive error.
There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor
If you go to
you'll find some log files called wsuspatch####.log that will give you more information. For me it stated that the error occurred in the process
MSI (s) (64:9C) [08:23:13:802]: Note: 1: 1722 2: ExConfigureDb 3: C:\Windows\Installer\MSIFFC2.tmp 4: -S <DBServerName> -F <DBName> -i "C:\Program Files\Update Services\Database\CreateDatabase.sql;C:\Program Files\Update Services\Database\mwus_database_schema.sql;C:\Program Files\Update Services\Database\ServerSync.sql;C:\Program Files\Update Services\Database\ClientWebService.sql;C:\Program Files\Update Services\Database\Setup.sql;C:\Program Files\Update Services\Database\Reporting.sql;C:\Program Files\Update Services\Database\ReportingSummarization.sql;C:\Program Files\Update Services\Database\ReportingRollup.sql;C:\Program Files\Update Services\Database\AdminAPI.sql;C:\Program Files\Update Services\Database\popdb.sql;C:\Program Files\Update Services\Database\EvtNamespaceImport.sql;C:\Program Files\Update Services\Database\SqlSettings.sql;C:\Program Files\Update Services\Database\Inventory.sql;C:\Program Files\Update Services\Database\PublicViews.sql" -l "C:\Users\ADMINI~1.SPI\AppData\Local\Temp\MWusCa.log"
At the end you'll see that the logging option was used (
). This file revealed the next clue:
Changed database context to '<DBName>'.<br/>Msg 1468, Level 16, State 1, Server <DBServerName>, Line 2<br/>The operation cannot be performed on database "<DBNAME>" because it is involved in a database mirroring session.Msg 5069, Level 16, State 1, Server <DBServerName>, Line 2<br/>ALTER DATABASE statement failed.<br/>Starting WSUSService...<br/>WSUSService is now started.<br/>StartServer completed successfully.
I'm indeed using mirroring so I disabled it and it installed flawlessly! Don't forget to enable mirroring again afterwards!
A good way of having a standby SQL server is to setup database mirroring. This will at least make sure that if the server goes down, you still have a hot standby. Having a witness server also enables you to do automatic failover. However setting this up using the GUI isn't well documented. Since I'm not that sure about my Transact-SQL skills, I rather use the GUI.
Start by making a backup of the DB and restore it on the designated mirror server.
Open the SQL Server Management Studio and expand the Databases folder.
Right-click the database you want to mirror and go to Tasks > Mirror
Click configure Security to continue.
Make sure that your firewall allows inbound connections on TCP port 1433 otherwise you won't be able to find your mirror server. Also make sure that the port set in the mirror security wizard is also allowed in your firewall.
If needed fill out the services accounts screen, otherwise just click next.
If you run into any errors, just check the logs. This error:
This means that the server is unreachable (firewall) or that the account that is trying to connect doesn't have connect permissions on the endpoint. This will show in the logs as well. All SQL service accounts of the principal, mirror and witness server need this permission!