114 votes

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

Je dois être en mesure d'établir une connexion ODBC par le biais de l'authentification du serveur SQL.

Dans SSMS, comment puis-je accorder la permission à un utilisateur d'avoir TOUS LES DROITS sur une base de données spécifique ?

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

151voto

marc_s Points 321990

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

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

Cela ajoute l'option par défaut db_datareader (droit de lecture sur toutes les tables) à cet utilisateur.

Il y a aussi un db_datawriter rôle - qui donne à votre utilisateur toutes les permissions 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 granulaire, vous pouvez utiliser la fonction GRANT commandement :

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 donner des autorisations granulaires SELECT, INSERT, UPDATE, DELETE sur des tables spécifiques.

Tout ceci est très bien documenté dans le Livres MSDN en ligne pour SQL Server .

Et oui, vous pouvez aussi le faire graphiquement - dans SSMS, allez dans votre base de données, puis Security > Users cliquez avec le bouton droit de la souris sur l'utilisateur auquel vous voulez donner des autorisations, puis Properties et en bas vous voyez "Database role memberships" où vous pouvez ajouter l'utilisateur aux rôles de la base de données.

alt text

1 votes

D'une manière ou d'une autre, je n'ai pas de nœud Users dans l'arbre de sécurité de SSMS, seulement Logins & Credentials - à part cela, pour que sp_addrolemember fonctionne, l'utilisateur doit être mappé à la base de données en question, sinon l'erreur "user ... does not exist in the database" est donnée ( stackoverflow.com/questions/7232559/ - voir les commentaires de la réponse acceptée) - j'ai pu établir un mappage utilisateur-bd grâce aux propriétés de l'objet Login de l'utilisateur.

0 votes

@marc_s, Comment accorder une permission liée à une table particulière en utilisant SSMS ?

1 votes

66voto

Joe Stefanelli Points 72874

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

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

21voto

SQLMenace Points 68670

Comme les suivantes. Cela rendra l'utilisateur propriétaire de la base de données.

EXEC sp_addrolemember N'db_owner', N'USerNAme'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X