我在我的 MSSQL 服务器 2005 上有一份工作,我想允许任何数据库用户运行。
我不担心安全性,因为工作实际工作的输入来自数据库表。只是运行作业,而不向该表添加记录将无济于事。
我只是找不到如何授予该工作的公共权限。
有没有办法做到这一点?在这一点上我唯一能想到的就是让工作不断地运行(或按计划),但因为它只需要很少做任何实际的工作(可能每几个月一次)而且我确实希望这项工作是一旦存在就完成,这似乎不是最佳解决方案。
您可以创建一个运行该作业的存储过程。您可以使用with execute as owner以数据库所有者身份运行存储过程。这样,用户自己就不需要sp_start_job.
with execute as owner
sp_start_job
create procedure dbo.DoYourJob with execute as owner as exec sp_start_job @job_name = 'YourJob'
授予执行权限DoYourJob以允许人们开始工作。
DoYourJob
当然,您也可以将作业的内容放在一个过程中,并授予运行该过程的权限。这将允许更多交互,例如显示结果文本。