Sql-Server
使用者無法在 SSMS 中查看非預設架構中的表
我在為我的一位
VIEW DEFINITION
使用者正確設置架構級別的權限時遇到問題。我已經創建了架構TestSchema
並添加了一些表。使用者目前具有通過和角色訪問和修改表(SELECT
、UPDATE
、DELETE
等)的權限。但是,他們看不到 SSMS 對象資源管理器中的任何表。dbo_datareader``dbo_datawriter
我嘗試授予查看定義的權限:
grant view definition on SCHEMA :: [TestSchema] to [User]
那沒有用。我嘗試設置表級權限:
grant view definition on [TestSchema].[NewTable] to [User]
那也沒用。然後我嘗試了一攬子贈款:
grant view definition to [User]
那確實奏效了;他們現在可以看到
TestSchema
,以及他們不應該訪問的其他模式。我的目標是允許使用者查看給定模式中的所有表。我該如何做到這一點?如果我應該能夠在預設情況下執行此操作,我應該查看哪些權限來找出我不能這樣做的原因?
簡短的回答:不要使用
db_datareader
ordb_datawriter
或他們的否認等價物。它們僅用於向後兼容。使用它們會導致您面臨的問題。如果您想授予委託人 Alice 對模式 Sales 中所有表值對象的 SELECT、INSERT、UPDATE 和 DELETE 權限,請使用以下命令。
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Sales TO Alice ;
如果您想授予委託人 Alice 對所有模式中的所有表值對象的 SELECT、INSERT、UPDATE 和 DELETE 權限,請使用以下命令。
GRANT SELECT, INSERT, UPDATE, DELETE TO Alice ;
然後元數據可見性將正常工作。