J'essaie de donner à un utilisateur Active Directory l'accès à une seule table spécifique. Je veux qu'ils puissent insérer, mettre à jour, supprimer, etc., mais uniquement pour cette table. Je connais cette commande:
GRANT Insert, Select on Tablename to user
Mais je n'arrive pas à comprendre comment faire fonctionner "domaine\utilisateur" en termes de syntaxe. J'ai essayé:
GRANT Insert, Select on Tablename to domain\user
Mais je reçois:
Msg 102, Niveau 15, Etat 1
Syntaxe incorrecte près de '\'.
En supposant que vous ayez créé un utilisateur dans cette base de données associé à la connexion AD, par exemple.
CREATE LOGIN [domain\user] FROM WINDOWS;
GO
USE your_database;
GO
CREATE USER [domain\user] FROM LOGIN [domain\user];
GO
Ensuite, vous devez simplement suivre la même syntaxe. Étant donné que \
n'est pas un caractère standard pour un identifiant, vous devez échapper le nom avec [square brackets]
:
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.Tablename TO [domain\user];
Il est recommandé de créer un rôle et d'ajouter des utilisateurs à ce rôle. Puis accordez des autorisations à ce rôle.
USE database_name
GO
--1)create role
CREATE ROLE role_name
GO
--2 create user
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'domain\user')
BEGIN
CREATE USER [domain\user] FOR LOGIN [domain\user]
END;
GO
-- 3 Add user to the role
ALTER ROLE [role_name] ADD MEMBER [domain\user]
GO
--4 Grant permissions to the role
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.Tablename TO [role_name];