SQL Server 2008: как предоставить привилегии имени пользователя?


102

Мне нужно установить соединение ODBC через аутентификацию SQL Server.

Как в SSMS предоставить пользователю ВСЕ ПРАВА на определенную базу данных?

есть ли способ сделать это графически с помощью SSMS?

Ответы:


139

Если вы хотите предоставить своему пользователю все разрешения на чтение, вы можете использовать:

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

Это добавляет значение по умолчанию db_datareader роль (разрешение на чтение для всех таблиц).

Также есть db_datawriterроль, которая дает вашему пользователю все разрешения WRITE (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 для SQL Server .

И да, вы также можете сделать это графически - в SSMS перейдите в свою базу данных, затем Security > Usersщелкните правой кнопкой мыши пользователя, которому вы хотите предоставить разрешения, а затем Propertiesвнизу вы увидите «Членство в ролях базы данных», где вы можете добавить пользователь в роли db.

альтернативный текст


почему-то у меня нет узла Users в дереве безопасности в SSMS, только логины и учетные данные - кроме этого, чтобы sp_addrolemember работала, пользователь должен быть сопоставлен с рассматриваемой базой данных, иначе «пользователь ... не существует в базе данных "выдается ошибка ( stackoverflow.com/questions/7232559/… - см. комментарии к принятому ответу) - я мог сопоставить пользовательскую базу данных с помощью свойств объекта входа пользователя
hello_earth

@marc_s, как с помощью SSMS дать разрешение на конкретную таблицу?
CAD


61

Если вы действительно хотите, чтобы у них были ВСЕ права:

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

18

Как следующее. Это сделает владельцем базы данных пользователей.

EXEC sp_addrolemember N'db_owner', N'USerNAme'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.