web-dev-qa-db-fra.com

Comment accorder un accès en lecture pour un utilisateur à une base de données dans SQL Server?

Je veux accorder l'accès à un utilisateur à une base de données spécifique avec un accès en lecture et en écriture. L'utilisateur est déjà disponible dans le domaine mais pas dans la base de données.

Alors, comment puis-je leur donner cet accès en créant un nouvel utilisateur et un nouveau mot de passe?

Quelqu'un m'a dit que cela peut être fait en spécifiant uniquement l'utilisateur, le domaine et la base de données auxquels vous souhaitez donner accès à l'utilisateur sans avoir à créer un nouvel utilisateur et un nouveau mot de passe.

C'est l'ancienne façon que je mettais en œuvre. Cela fonctionne mais il crée une nouvelle connexion et un nouvel utilisateur plutôt que d'utiliser celui qui est disponible dans le domaine:

use DBName;
create login a_2 with password='Aa123';
create user a_2 for login a_2;
grant insert to a_2;
grant select to a_2;
30
Q8Y

Il s'agit d'un processus en deux étapes:

  1. vous devez créer un login pour SQL Server pour cet utilisateur, basé sur son compte Windows

    CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;
    
  2. vous devez accorder cette autorisation de connexion pour accéder à une base de données:

    USE (your database)
    CREATE USER (username) FOR LOGIN (your login name)
    

Une fois que vous avez cet utilisateur dans votre base de données, vous pouvez lui donner tous les droits que vous souhaitez, par exemple vous pouvez lui attribuer le db_datareader rôle de base de données pour lire toutes les tables.

USE (your database)
EXEC sp_addrolemember 'db_datareader', '(your user name)'
70
marc_s