2011-02-17 2 views
84

J'ai une application .net qui se connecte à SQL Server en utilisant l'authentification Windows.Comment ajouter un groupe d'utilisateurs Active Directory en tant que connexion dans SQL Server

Nous ne pouvons pas utiliser l'authentification SQL Server dans l'application. Nous avons beaucoup d'utilisateurs d'Active Directory pour notre projet. Nous devons donc créer un compte de connexion distinct pour chaque utilisateur Active Directory dans SQL Server plutôt que de créer un compte de connexion distinct pour chaque utilisateur AD. Existe-t-il un moyen d'utiliser le groupe d'utilisateurs Active Directory dans SQL Server?

Répondre

123

Dans SQL Server Management Studio, accédez à Object Explorer > (your server) > Security > Logins et clic droit New Login:

enter image description here

Puis, dans la boîte de dialogue qui apparaît, choisissez les types d'objets que vous voulez voir (Groups est désactivé par défaut - cochez-le!) et choisissez l'emplacement où vous voulez rechercher vos objets (par exemple, utilisez Entire Directory), puis trouvez votre groupe AD.

enter image description here

Vous avez maintenant une ouverture de session standard SQL Server - comme lorsque vous créez un pour un seul utilisateur AD. Donnez à ce nouveau login les permissions sur les bases de données dont il a besoin, et c'est parti!

Tout membre de ce groupe AD peut maintenant se connecter à SQL Server et utiliser votre base de données.

+0

Merci pour cela, idéal. – Derek

+0

Y at-il une chance de créer des groupes dans mysql comme ci-dessus? – uzay95

+0

@ uzay95: désolé, aucune idée - je ne connais pas MySQL. Mais puisque c'est une base de données multi-plateforme, je doute qu'il ait quelque chose de très spécifique à Windows comme ça ... –

19

Vous pouvez utiliser T-SQL:

use master 
GO 
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH 
DEFAULT_DATABASE=yourDbName 
GO 
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH 
DEFAULT_DATABASE=yourDbName 

J'utilise cela comme une partie de la restauration du serveur de production à la machine d'essai:

USE master 
GO 
ALTER DATABASE yourDbName SET OFFLINE WITH ROLLBACK IMMEDIATE 
RESTORE DATABASE yourDbName FROM DISK = 'd:\DropBox\backup\myDB.bak' 
ALTER DATABASE yourDbName SET ONLINE 
GO 
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH 
DEFAULT_DATABASE=yourDbName 
GO 
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH 
DEFAULT_DATABASE=yourDbName 
GO 

Vous aurez besoin d'utiliser le nom localisé de services cas de Windows allemand ou français, voir How to create a SQL Server login for a service account on a non-English Windows?

+0

Dans le cas où vous devez également définir le login/principal au niveau de la base de données, voici une autre réponse que j'ai trouvée utile: http: //dba.stackexchange.com/a/2578/60876 – Agostino

+0

Je me demande si cela peut être utilisé pour accorder un certain accès actif en lecture à un certain schéma - en pseudo sql 'CREATE LOGIN ... WITH DEFAULT_SCHEMA' les points '...' doivent référence un certain groupe d'annonces. Nous avons plusieurs groupes et nous aimerions donner un accès actif au groupe de répertoires 'accountants' au schéma'A 'mais pas au schéma'B' et 'C'. De même, le groupe «facturation» ne devrait avoir accès qu'au schéma «B». En tant que frontend, nous utilisons l'accès msft. – surfmuggle

Questions connexes