MSSQL - 隱藏數據庫
我有一個 MSSQL 2005 伺服器設置並執行。我希望能夠進行以下設置:
database_one
作為user_one
db_owner和作為db_owner
database_two``user_two
棘手的部分(至少對我來說)是我想
database_one
被隱藏user_two
和database_two
被隱藏user_one
。到目前為止,我已經找到了
VIEW ANY DATABASE
許可。玩弄這個似乎無論我如何為使用者設置更具體的權限,VIEW ANY DATABASE
權限都優先。如果我執行
DENY VIEW ANY DATABASE TO user_one
,以 user_one 連接將只顯示master
和tempdb
系統數據庫,即使 user_one 設置為 database_one 的 db_owner。有沒有辦法設置權限來做我想做的事?
sys.databases的可見性:
如果 sys.databases 的呼叫者不是數據庫的所有者,並且數據庫不是 master 或 tempdb,則查看相應行所需的最低權限是 ALTER ANY DATABASE 或 VIEW ANY DATABASE 伺服器級權限,或 CREATE DATABASE 權限主數據庫。呼叫者連接的數據庫始終可以在 sys.databases 中查看。
因此,預設可見性正是您所要求的:每個使用者都能夠看到 master、tempdb 和它自己的數據庫。確保 user_one 是 database_one 的所有者(不僅僅是 db_owner 角色的成員!),如下所示:
ALTER AUTHORIZATION ON DATABASE::database_one TO user_one;
如果設置正確(user_one 是 database_one 的所有者,user_two 是 database_two 的所有者)並且沒有重新授予額外的權限,那麼您應該得到您所要求的。具體來說,您不必拒絕任何事情,您必須拒絕權限這一事實意味著您的測試有問題(您授予了 user_one 和 user_two 的登錄額外的、不需要的權限)。