2010-10-22 129 views

回答

121

如果你想給你的用戶的所有權限讀取,你可以使用:

EXEC sp_addrolemember N'db_datareader', N'your-user-name' 

這增加默認db_datareader角色(讀取所有表的權限)給該用戶。

還有一個db_datawriter作用 - 這給你的用戶的所有寫權限(INSERT,UPDATE,DELETE)的所有表:

EXEC sp_addrolemember N'db_datawriter', N'your-user-name' 

如果你需要更精細的,你可以使用GRANT命令:

GRANT SELECT, INSERT, UPDATE ON dbo.YourTable TO YourUserName 
GRANT SELECT, INSERT ON dbo.YourTable2 TO YourUserName 
GRANT SELECT, DELETE ON dbo.YourTable3 TO YourUserName 

等等 - 您可以在特定表上細化地給予SELECT,INSERT,UPDATE,DELETE權限。

這在MSDN Books Online for SQL Server中都有很好的記錄。

是的,你也可以做到這一點圖形 - 在SSMS,去你的數據庫,然後Security > Users,你想在你看到「數據庫角色成員底部,爲的權限,然後Properties ADN用戶右鍵點擊「你可以將用戶添加到數據庫角色。

alt text

+0

寫什麼>? – 2010-10-22 16:01:00

+0

不知何故,我沒有SSMS中安全樹中的用戶節點,只有登錄和憑證 - 除此之外,爲了讓sp_addrolemember工作,用戶必須被映射到有問題的數據庫,否則「用戶...不存在於數據庫「錯誤給出(http://stackoverflow.com/questions/7232559/mssql-giving-loginsusers-db-owner-access-to-database-看到接受的答案的評論) - 我可以給用戶-db通過用戶的登錄對象的屬性映射 – 2014-08-14 11:26:55

+0

@marc_s,如何使用SSMS授予與特定表相關的權限? – CAD 2014-10-12 07:00:56

56

如果你真的希望他們有版權所有:

use YourDatabase 
go 
exec sp_addrolemember 'db_owner', 'UserName' 
go 
17

像下面。它將使用戶數據庫所有者。

EXEC sp_addrolemember N'db_owner', N'USerNAme'