When loading this page in Central Administration, I was being presented with a Excel Services error and a correlation ID.
Looking at the ULS logs I noticed the following error.
Insufficient SQL database permissions for user ‘Name: <DOMAIN\USERNAME> SID: <SID-CODE> ImpersonationLevel: None’ in database ‘<DATABASE-NAME>’ on SQL Server instance ‘<SQL-INSTANCE>’. Additional error information from SQL Server is included below. The EXECUTE permission was denied on the object ‘proc_ReturnWebFeatures’, database ‘<DATABASE-NAME>’, schema ‘dbo’. 1d0d479c-5a36-c0dc-912b-5bc267b09a0a
The database name was referring to the Content Admin database of Central Administration and the user name was referring to the service application account that the PowerPivot service application had been configured to run under.
The proc_ReturnWebFeatures stored procedure required the user to be a member of the SPDataAccess role to allow EXECUTE permissions. The service application user was only in the WSS_Content_Application_Pools role.
If you run the following script, this will grant the correct rights in the database
$url = “http://centraladminsite:2013”
$webApp = Get-SPWebApplication -Identity $url
Now when you load up the PowerPivot Management Dashboard, you report should be displayed.
THIS IS VERY BAD. WE ALL KNOW THAT MAKING DIRECT UPDATES TO THE DATABASE WILL CREATE SOME SORT OF BLACK HOLE AND KITTENS DIE IN REDMOND ETC, ETC. I HAVEN’T TESTED THE LONG TERM EFFECTS AND ONLY DID THIS ON MY DEVELOPMENT ENVIRONMENT TO GET ME OUT OF A PICKLE.
If you ever get this error when trying to update a field, either through the web UI or programmatic-ally it normally means your Version fields are out of sync. This can occur if your field has been created using the Schema XML from another environment or you have migrated content using some dodgy 3rd party app.
Run this update on your content databases and you all should be good again.
SET [Version] = CAST([Definition] AS XML).value('(/Field/@Version)', 'int')
WHERE CAST([Definition] AS XML).value('(/Field/@Version)', 'int') <> [Version]