0
- 一個單一的Microsoft SQL Server 2008 R2
- 兩個數據庫有一些表:
DB1
和DB2
(兩者使用相同的所有者) - 在DB1,
DB1.dbo.View1
的視圖,即SELECT * FROM DB2.dbo.Table1
- 作用,
ViewRole
,在DB1授予SELECT許可證到視圖(沒有其他權限) - 個Windows用戶,
DOMAIN\user
,與服務器角色設置爲public
,誰屬於DB1的ViewRole
當用戶試圖從視圖中進行選擇,我得到的錯誤:
The server principal "DOMAIN\user" is not able to access the database "DB2" under the current security context
我曾嘗試(希望成功)同時使用,以激活跨數據庫所有權鏈接:
EXEC sp_configure 'Cross DB Ownership Chaining', '1';RECONFIGURE
和
EXEC sp_dboption DB1, 'db chaining', 'true'
EXEC sp_dboption DB2, 'db chaining', 'true'
要確認設定時,我跑:
SELECT name, owner_sid, is_db_chaining_on FROM sys.databases
,其結果是:
name owner_sid is_db_chaining_on
DB1 0x0105...DCB510000 1
DB2 0x0105...DCB510000 1
所以,不是用戶爲什麼就能從執行SELECT視圖?如果視圖僅從DB1中的表中進行選擇,則不會出現錯誤。
任何人有任何建議可能會錯過或誤解?
感謝JodyT!這就是它。一旦我將用戶添加到DB2,它就像一個魅力一樣。我還將刪除服務器級別選項;我只是將其添加到完全確定它是活躍的。 – ANisus