SQL Agent Admin Permissions
The complete grant script for giving a user full SQL Server Agent administration rights.
Everything a user needs to manage SQL Server Agent - jobs, alerts, operators and notifications - without being a sysadmin. It creates the user in both master and msdb, adds them to db_datareader/db_datawriter in each, grants ALL on the specific xp_sqlagent_* procedures and system tables that SSMS calls when you browse and edit agent objects, and adds them to all three SQLAgent roles in msdb.
USE [master]
GO
--Create user in database [master]:
CREATE USER [<username>] FOR LOGIN [<username>]
GO
--Grant user access to read/write objects in database [master]:
EXEC sp_addrolemember N'db_datareader', N'<username>'
GO
EXEC sp_addrolemember N'db_datawriter', N'<username>'
GO
--Grant user access to SQL agent objects in database [master]:
GRANT ALL ON master.dbo.sysperfinfo TO [<username>]
GO
GRANT ALL ON master.dbo.xp_sqlagent_notify TO [<username>]
GO
GRANT ALL ON master.dbo.xp_sqlagent_enum_jobs TO [<username>]
GO
GRANT ALL ON master.dbo.xp_sqlagent_param TO [<username>]
GO
GRANT ALL ON master.dbo.xp_sqlagent_is_starting TO [<username>]
GO
GRANT ALL ON master.dbo.xp_instance_regenumvalues TO [<username>]
GO
USE [msdb]
GO
--Create user in database [msdb]:
CREATE USER [<username>] FOR LOGIN [<username>]
GO
--Add user to SQL agent roles in database [msdb]:
EXEC sp_addrolemember N'SQLAgentOperatorRole', N'<username>'
GO
EXEC sp_addrolemember N'SQLAgentReaderRole', N'<username>'
GO
EXEC sp_addrolemember N'SQLAgentUserRole', N'<username>'
GO
--Grant user access to read/write objects in database [msdb]:
EXEC sp_addrolemember N'db_datareader', N'<username>'
GO
EXEC sp_addrolemember N'db_datawriter', N'<username>'
GO
--Grant user access to SQL agent objects in database [msdb]:
GRANT ALL ON msdb.dbo.sp_help_alert TO [<username>]
GO
GRANT ALL ON msdb.dbo.sp_help_notification TO [<username>]
GO
GRANT ALL ON msdb.dbo.sysalerts TO [<username>]
GO
GRANT ALL ON msdb.dbo.sysoperators TO [<username>]
GO
GRANT ALL ON msdb.dbo.sysnotifications TO [<username>]
GO