当试图在SSMS中查看作业的属性时,用户将在对象sp_help_targetserver上获得错误执行被拒绝。这是MSDB中的sys。
用户有
SQLAgentReaderRoleSQLAgentUserRole这应该足以让你看到工作本身。这些角色被分配给他们的AD组。所有用户都是属于具有这些权限的AD组的域用户。
有人知道为什么管理工作室试图执行sp_help_targetserver只是为了查看作业吗?执行sp_help_job可以工作。
发布于 2018-04-20 13:09:14
Server代理作业可以通过"Target Server“属性以非本地服务器为目标。

为了使“目标多服务器”选项启用,您需要设置一个支持跨企业的自动化管理的主服务器。
SSMS正在运行msdb.dbo.sp_help_targetserver存储过程,以获取可能在“目标”属性窗口中列出的服务器的详细信息。
为了运行sp_help_targetserver存储过程,用户必须是sysadmin角色的成员.。如果用户不是sysadmin的成员,他们可以简单地忽略错误消息。但是,他们应该注意到,在主服务器环境中,属性窗口可能不会显示准确的详细信息。
默认情况下,运行msdb.dbo.sp_help_job将运行sp_help_jobserver。但是,如果运行EXEC dbo.sp_help_job @job_name = 'some_job', @job_aspect = 'JOB';,则不会检查目标服务器,也不会显示目标服务器。这可能为非sysadmin用户查看作业属性提供了一种很好的方式,尽管不是通过GUI。
对于Server代理角色,代理角色表示关于SQLAgentReaderRole的事:
SQLAgentReaderRole包括所有SQLAgentUserRole权限以及查看可用多服务器作业列表、其属性和历史记录的权限。此角色的成员还可以查看所有可用作业和作业计划及其属性的列表,而不只是查看它们拥有的作业和作业计划。SQLAgentReaderRole成员不能更改职务所有权以获得对他们尚未拥有的作业的访问权。只有对象资源管理器中的作业节点对SQLAgentReaderRole成员可见。
上面的内容似乎与sp_help_targetserver的Docs不一致,后者明确规定用户必须是sysadmin角色的成员。
发布于 2018-04-20 15:11:29
我基本上通过重新设置权限来解决这个问题。删除SQLAgentReader和SQLAgentUser角色下的所有用户,并重新添加它们。还授予有问题的用户在SP_HELP_TARGET_SERVERS上执行。这不是一种解决办法,而是一种解决办法。
https://dba.stackexchange.com/questions/204521
复制相似问题