Skip to content

SQL Agent Admin Permissions

The complete grant script for giving a user full SQL Server Agent administration rights.

Published Jul 2, 2006

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
An unhandled error has occurred. Reload 🗙