授予运行 SQL 服务器作业的权限

Sha*_*sek 23 sql-server-2005 security sql-server permissions

我在 MSSQL Server 2005 上有一份工作,我想允许任何数据库用户运行。

我不担心安全性,因为作业实际工作的输入来自数据库表。只是运行作业,而不向该表添加记录将什么都不做。

我只是找不到如何授予这项工作的公共权限。

有没有办法做到这一点?在这一点上我唯一能想到的就是让工作不断地运行(或按计划),但因为它只需要很少(可能每几个月一次)做任何实际工作,而且我确实希望工作是一旦存在就完成,这似乎不是最佳解决方案。

And*_*mar 21

您可以创建一个运行该作业的存储过程。您可以使用with execute as owner以数据库所有者身份运行存储过程。这样,用户自己就不需要sp_start_job.

create procedure dbo.DoYourJob
with execute as owner
as
exec sp_start_job @job_name = 'YourJob'
Run Code Online (Sandbox Code Playgroud)

授予执行权限DoYourJob以允许人们开始工作。

当然,您也可以将作业的内容放在过程中,并授予运行该过程的权限。这将允许更多交互,例如显示结果文本。


小智 5

这将允许特定用户 (user1) 运行任何 SQL 代理作业。

SQLAgentUserRole的成员SQLAgentReaderRole只能开始自己拥有的工作。的成员SQLAgentOperatorRole可以启动所有本地作业,包括其他用户拥有的作业。

USE [msdb]
GO
CREATE USER [user1] FOR LOGIN [user1]
GO
USE [msdb]
GO
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1]
GO
Run Code Online (Sandbox Code Playgroud)