【发布时间】:2015-03-15 07:36:38
【问题描述】:
我在 myCustomDatabase 中定义了以下视图:
CREATE VIEW myCustomDatabase.dbo.myView AS
SELECT job_id FROM msdb.dbo.sysjobhistory
myCustomDatabase 的所有者是 sa。
我的当前用户(称为 currentUser)在 myCustomDatabase 上只有 db_reader 角色。
guest 已在 msdb 数据库上启用。
当我执行视图时,出现以下错误:
The SELECT permission was denied on the object 'sysjobhistory', database 'msdb', schema 'dbo'.
我了解我当前的用户在系统数据库上没有定义任何角色。
我应该向当前用户授予哪个角色/授权以允许他执行视图(仅包含系统视图的一列),但不授予他对表的完全访问权限。
要恢复以下视图,当使用 currentUser 调用时应该可以工作:
CREATE VIEW myCustomDatabase.dbo.myView AS
SELECT job_id FROM msdb.dbo.sysjobhistory
,但不是以下查询:
SELECT * FROM msdb.dbo.sysjobhistory
编辑:MSDB 中的可查看表
Edit2 : 我的 SQLServer 版本是 2008
【问题讨论】:
标签: sql-server database user-management