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