SQL Server 2008: como concedo privilégios a um nome de usuário?


102

Preciso ser capaz de estabelecer uma conexão ODBC por meio da autenticação do SQL Server.

No SSMS, como concedo permissão para que um usuário possa ter TODOS OS DIREITOS em um banco de dados específico?

existe uma maneira de fazer isso graficamente com SSMS?

Respostas:


139

Se quiser dar ao seu usuário todas as permissões de leitura, você pode usar:

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

Isso adiciona a db_datareaderfunção padrão (permissão de leitura em todas as tabelas) para esse usuário.

Há também uma db_datawriterfunção - que dá ao seu usuário todas as permissões de GRAVAÇÃO (INSERT, UPDATE, DELETE) em todas as tabelas:

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

Se você precisar ser mais granular, pode usar o GRANTcomando:

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

e assim por diante - você pode dar granularmente a permissão SELECT, INSERT, UPDATE, DELETE em tabelas específicas.

Tudo isso está muito bem documentado nos Manuais Online do MSDN para SQL Server .

E sim, você também pode fazer isso graficamente - no SSMS, vá para o seu banco de dados, Security > Usersclique com o botão direito do mouse no usuário ao qual deseja dar permissões e, Propertiesna parte inferior, você verá "Associações de funções de banco de dados" onde pode adicionar o usuário para funções db.

texto alternativo


de alguma forma eu não tenho o nó Usuários na árvore de segurança no SSMS, apenas Logins e credenciais - além disso, para que sp_addrolemember funcione, o usuário deve ser mapeado para o banco de dados em questão, caso contrário "usuário ... não existe no banco de dados "é dado o erro ( stackoverflow.com/questions/7232559/… - ver comentários para a resposta aceita) - eu poderia mapear o banco de dados do usuário por meio das Propriedades do objeto Login do usuário
hello_earth

@marc_s, Como conceder permissão relacionada a uma determinada tabela usando SSMS?
CAD


61

Se você realmente deseja que eles tenham TODOS os direitos:

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

18

Como o seguinte. Isso tornará o usuário o proprietário do banco de dados.

EXEC sp_addrolemember N'db_owner', N'USerNAme'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.