我定義成以下視圖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