程序不允许查询msdb.dbo.sysjobs但帐户可以

时间:2017-01-11 13:09:39

标签: sql-server permissions procedure denied

我不是DBA的专家,而且我已经尝试了很多东西。这是场景。

此客户在此服务器上运行多个数据库,我们不允许为我们的帐户安装sysadmin固定服务器。

基本上这种情况正在发生。

  1. 有人按下一个按钮,然后启动程序A.
  2. 过程A运行过程B(正在查找特定的SQLSA作业),我们收到错误。
  3. 第三步是程序B尝试检查这个特定的SQLSA作业是否正在运行,如果没有,则启动它。
  4. 但是,我们从未进入第3步。

    程序B具有以下代码。

    SELECT @job_id = job_id 
          FROM   msdb.dbo.sysjobs sj 
          WHERE  sj.name = @job 
    

    这会产生以下错误。

    Msg 50000, Level 14, State 1, Procedure sp_startAgentJobAndWait, Line 151
    Error 229, Level 14, State 5, Procedure sp_startAgentJobAndWait, Line 36, Message: The SELECT permission was denied on the object 'sysjobs', database 'msdb', schema 'dbo'.
    

    但是,如果我登录到同一个SQL帐户并查询msdb.dbo.sysjobs它可以正常工作。

    我需要帮助他们的IT人员找到他们需要添加的特定权限才能实现这一目标。

    B程序将运行的下一个有趣的代码块是

    INSERT INTO @xp_results 
          EXECUTE master.dbo.Xp_sqlagent_enum_jobs 
    
    
    EXEC @r = msdb..Sp_start_job 
    

    我想这也可能有问题吗?如果有人非常擅长处理权限,我们非常感谢您的建议或帮助。

0 个答案:

没有答案