一尘不染

授予运行 SQL Server 作业的权限

sql-server

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

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

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

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


阅读 98

收藏
2022-11-14

共1个答案

一尘不染

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

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

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

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

2022-11-14