Grant permissions to run an SQL server job

You could create a stored procedure that runs the job. You can use with execute as owner to run the stored procedure as the database owner. That way, the users themselves don't need permissons on sp_start_job.

create procedure dbo.DoYourJob
with execute as owner
as
exec sp_start_job @job_name = 'YourJob'

Grant execute rights on DoYourJob to allow people to start the job.

Of course, you can also put the contents of the job in a procedure, and grant rights to run that. That would allow more interaction, like displaying a result text.


Basically, permissions are needed on sp_start_job (see permissions section).

The roles are described in "SQL Server Agent Fixed Database Roles" (linked from above)

Edit, Jan 2012

After the anonymous downvote 2 years after I answered...

Read the question. It says

I want to allow any database user to run

then

I'm not worried about security

and also

I just can't find how to grant public permissions to the job

So OP's comments below contradict the question