Sql-Server

使用者無法在 SSMS 中查看非預設架構中的表

  • February 19, 2015

我在為我的一位VIEW DEFINITION使用者正確設置架構級別的權限時遇到問題。我已經創建了架構TestSchema並添加了一些表。使用者目前具有通過和角色訪問和修改表(SELECTUPDATEDELETE等)的權限。但是,他們看不到 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_datareaderordb_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 ;

然後元數據可見性將正常工作。

引用自:https://dba.stackexchange.com/questions/27525