I was running the SharePoint 2013 Products Configuration Wizard to finalise the March 2013 PU and it failed at 10% of the last stage. I checked the error log and found that the error was:
“The exclusive inplace upgrader timer job failed.”
This means two things: 1) the SharePoint timer job service is involved behind the scene, and 2) something has gone wrong within the timer job.
Along with the log file that the Wizard tells you to examine, there is another log file that has information about what went wrong with the timer job. The name of this log file is something like Upgrade-20140724-111205-873-error.log and can be found in the same folder as the Wizard’s log file, i.e. in the ULS log folder.
In my case the error message in this second log file was:
“Error running SQL DDL Script: IF EXISTS (SELECT TOP 1 1 FROM sys.database_principals WHERE name = N’db_owner’ A…. System.Data.SqlClient.SqlException (0x80131904): Cannot alter the role ‘db_owner’, because it does not exist or you do not have permission.”
This indicates a SQL permission issue. According to TechNet (http://technet.microsoft.com/en-us/library/ee662513.aspx), the setup account needs:
- dbcreator fixed server role
- securityadmin fixed server role
- db_owner fixed database role for all SharePoint databases in the server farm
It is important to note though that the account the SharePoint timer service is running under may not be the same account as the one you are using to run the Wizard. This service runs under the farm account.
I checked the SQL permissions for the farm account, and it does not have db_owner to all SharePoint databases. Rather than granting this role to each individual database, I granted the farm account the sysadmin server role. I ran the Wizard again and this time it completed successfully.
By granting the sysadmin role, you can easily revert this after completing the upgrade process.