We had an instance where the SQL Server would start but the SQL Server Agent using the same account was unable to start with an Access Denied error.
1) check that the service account is not locked out in AD
2) check that the ‘log on as a service’ rights are still valid and assigned to the service account (it hasnt been lost or revoked) with gpedit.msc
3) try trunning the command of the service directly in the command prompt (so you can see the error message reported back)
General tab of service > Path to executable – copy and paste the entire path into a cmd window.
We received the error
‘SQL Server Agent and StartServiceCtrlDispatcher (error 6)’
This lead to the service not having rights on the logs directory for the SQLAGENT.OUT file.
Check the registry for the for the log location related to the SQLINSTANCE – listed as
HKLMsoftwaremicrosoftmicrosoft sql servermssql.xxsqlserveragentErrorLogFile
Check the permissions on this listed directory, or one of its parents, and that the ‘service’ account has the rights to modify, read write, edit etc etc..
We browsed to a parent directory and just gave full control, then replace existing inheritable permissions to flow down. (i.e x:datamssqlinstance)
(as this service account was used for everything but was just not a local admin of the SQL box)
Service started successfully.