Sql-Server

db_datareader 和 db_denydatawriter 有什麼區別?

  • June 10, 2021

我正在嘗試將 SQL Server 數據庫角色分配給只需要能夠查看所有表中的數據的使用者。我想知道和

有什麼區別? 從文件中我似乎沒有意識到任何區別。db_datareader``db_denydatawriter

謝謝,

我正在嘗試將 SQL Server 數據庫角色分配給只需要能夠查看所有表中的數據的使用者。

你應該只讓他成為 的成員db_datareader

預設情況下,任何新創建的user根本沒有權限(除非您授予某些權限public或相應login的權限在server level: 例如,view any definition在伺服器級別意味著view definition立即database level映射login到數據庫)。

我認為您何時使用該db_denydatawriter角色的真實範例會有所幫助。

我的一個客戶有一個第三方供應商協助一個長期(2 年)、固定範圍的項目。供應商將在項目期間處理客戶的域。出於文件共享目的,供應商的 AD 使用者帳戶已成為現有 AD 安全組的一部分。我們使用同一個 AD 安全組來授予 SQL Server 中的數據庫訪問權限。

我們不希望供應商能夠對數據庫進行任何更改,但我們確實希望他們具有與 AD 安全組的其他成員相同的讀取訪問權限。

我們通過將單個供應商 AD 使用者帳戶添加到db_denydatawriter角色中輕鬆實現了這一點。


一個好的經驗法則是,如果您不確定自己需要哪個角色,您可能需要db_datareader. 的案例db_denydatawriter更加專業。

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