我定义成以下视图myCustomDatabase:如何赋予用户对视图的访问权限,但不允许视图正在使用的表格?
CREATE VIEW myCustomDatabase.dbo.myView AS
SELECT job_id FROM msdb.dbo.sysjobhistory
myCustomDatabase的主人是SA。
我的当前用户(称为currentUser)只会对myCustomDatabase的db_reader
作用。
guest is enabled on msdb database。
当我执行我得到以下错误的观点:
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年
我的自定义数据库不属于* sa *用户,如果我将* sa *设置为拥有者,您建议它可以破坏一些现有的访问规则? – Fractaliste
@Fractaliste,我在帖子中添加了更多信息。这也可以通过证书来完成。如果您指定了正在使用的SQL Server版本,我将添加有关该技术的更多信息。 –
如果两个数据库都是sa拥有的,我不需要在DATABASE :: myCustomDatabase上执行'ALTER AUTHORIZATION TO sa;'是不是? – Fractaliste