SQL Server 2008: comment accorder des privilèges à un nom d'utilisateur?

102

J'ai besoin de pouvoir établir une connexion ODBC via l'authentification SQL Server.

Dans SSMS, comment autoriser un utilisateur à avoir TOUS DROITS sur une base de données spécifique?

existe-t-il un moyen de faire cela graphiquement avec SSMS?

l --''''''--------- '' '' '' '' '' '
la source

Réponses:

139

Si vous souhaitez donner à votre utilisateur toutes les autorisations de lecture, vous pouvez utiliser:

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

Cela ajoute le db_datareaderrôle par défaut (autorisation de lecture sur toutes les tables) à cet utilisateur.

Il existe également un db_datawriterrôle - qui donne à votre utilisateur toutes les autorisations WRITE (INSERT, UPDATE, DELETE) sur toutes les tables:

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

Si vous avez besoin d'être plus précis, vous pouvez utiliser la GRANTcommande:

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

et ainsi de suite - vous pouvez accorder de manière granulaire l'autorisation SELECT, INSERT, UPDATE, DELETE sur des tables spécifiques.

Tout cela est très bien documenté dans la documentation en ligne MSDN pour SQL Server .

Et oui, vous pouvez également le faire graphiquement - dans SSMS, accédez à votre base de données, puis Security > Userscliquez avec le bouton droit de la souris sur l'utilisateur auquel vous souhaitez accorder des autorisations, puis Propertiesen bas, vous voyez "Appartenance aux rôles de base de données" où vous pouvez ajouter le utilisateur aux rôles de base de données.

texte alternatif

marc_s
la source
D'une manière ou d'une autre, je n'ai pas de nœud Utilisateurs dans l'arborescence de sécurité de SSMS, uniquement les connexions et les informations d'identification - à part cela, pour que sp_addrolemember fonctionne, l'utilisateur doit être mappé à la base de données en question, sinon "utilisateur ... ne le fait pas existe dans la base de données "une erreur est donnée ( stackoverflow.com/questions/7232559/… - voir les commentaires sur la réponse acceptée) - je pourrais mapper l'utilisateur-db via les propriétés de l'objet de connexion de l'utilisateur
hello_earth
@marc_s, Comment accorder une autorisation relative à une table particulière en utilisant SSMS?
CAD
1
@Chathuranga: lisez les excellents documents disponibles gratuitement!
marc_s
61

Si vous voulez vraiment qu'ils aient TOUS les droits:

use YourDatabase
go
exec sp_addrolemember 'db_owner', 'UserName'
go
Joe Stefanelli
la source
18

Comme le suivant. Cela rendra le propriétaire de la base de données utilisateur.

EXEC sp_addrolemember N'db_owner', N'USerNAme'
SQLMenace
la source