什么等于包含后缀[msdb]. [dbo]. [sysschedules_localserver_view]的数据库表_localserver_view?
[msdb].[Dbo].[Sp_help_schedule]存在权限问题,我注意到我选择运行这个存储过程的用户,在表[msdb].[dbo].[sysbobschedules]中选择access比访问表[msdb]. [dbo].[sysschedules_localserver_view] (由[msdb].[dbo].[sp_help_schedule]的内部命令执行)更多是没有意义的。
还请注意,此表不存在于msdb数据库或表、视图或存储过程文件夹中。
为什么要知道这个_localserver_view扩展在权限或表视图中更改了什么。
发布于 2018-12-12 13:54:17
我不确定我是否理解你的问题,但我会尽力解释不同之处。
当您在msdb中拥有完全权限时,您将得到相同的行
msdb.dbo.sp_help_schedulemsdb.dbo.sysschedules_localserver_view中选择msdb.dbo.sysschedules中选择这是因为msdb.dbo.sp_help_schedule从msdb.dbo.sysschedules_localserver_view中选择,而后者从msdb.dbo.sysschedules中选择。
当从问题中提到的msdb.dbo.sysjobschedules中选择时,您将得到更少的行,这是因为msdb.dbo.sysjobschedules
包含要由Server代理执行的作业的计划信息。
msdb.dbo.sysschedules还显示当前与任何现有作业无关的计划,例如包含可能未配置的数据收集器计划。
msdb中只有select权限时
他将无法执行msdb.dbo.sp_help_schedule,他将在从表msdb.dbo.sysschedules和msdb.dbo.sysjobschedules中选择时获得完整的结果,但在从msdb.dbo.sysschedules_localserver_view视图中选择时不会得到任何行。
这是因为此视图包含where子句:
WHERE (svr.master_server = 0)
AND ( (sched.owner_sid = SUSER_SID())
OR (ISNULL(IS_SRVROLEMEMBER(N'sysadmin'), 0) = 1)
OR (ISNULL(IS_MEMBER(N'SQLAgentReaderRole'), 0) = 1)
)这意味着要从该视图中获取任何行,对于当前用户来说,以下内容之一应该是正确的:
owner (只返回与所属作业相关的计划)sysadmin固定服务器角色的成员(所有行都将被返回)SQLAgentReaderRole数据库角色的成员(将返回所有行)https://dba.stackexchange.com/questions/224679
复制相似问题