Problem Description

While deploying a solution the following exception was thrown:

Error Message

EXECUTE permission was denied on the object 'proc_putObject', database 'SharePoint_Config', schema 'dbo'

Logs analysis

The EXECUTE permission was denied on the object 'proc_putObject', database 'SharePoint_Config', schema 'dbo'.  at 

System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
 at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
 at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
 at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
 at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
 at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
 at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
 at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
 at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
 at Microsoft.SharePoint.Utilities.SqlSession.ExecuteNonQuery(SqlCommand command)
 at Microsoft.SharePoint.Administration.SPConfigurationDatabase.StoreObject(SPPersistedObject obj, Boolean storeClassIfNecessary, Boolean ensure)
 at Microsoft.SharePoint.Administration.SPConfigurationDatabase.PutObject(SPPersistedObject obj, Boolean ensure)
 at Microsoft.SharePoint.Administration.SPPersistedObject.Update()

Root cause: Permissions

This error appears to be an issue with the permissions to the SharePoint configuration database. The general recommendation I found was to ensure that the application pool identity of the web application has sufficient permissions on the config database. 

Resolution:

Found a very practical and comprehensive MS article

http://technet.microsoft.com/en-us/library/ee513067.aspx 

Detailed Steps:

In order to resolve the issue, I provided Execute permission to the database role "WSS_Content_Application_Pools" into the stored procedure "proc_putObject". I performed the following steps to do this:

  • In the database server, expand SharePoint Config database and navigate to Programmability/Stored Procedures/dbo.proc_putObject using SQL Server Management Studio.
  • Right click on the above stored procedure and select Properties.
  • On the popup screen, select Permissions on the left and click Search button.
  • On the new popup screen, click Search, select [WSS_Content_Application_Pools] database role and click OK.
  • Click OK again.
  • On the first popup screen, select the role, check Execute permission and click OK