2010-01-06 3 views
0

J'ai un utilisateur qui peut se connecter au serveur sql. Maintenant, j'ai besoin d'ajouter un utilisateur dans la base de données, mais je ne suis pas sûr si cet utilisateur existe déjà dans la base de données ou non. J'ai donc besoin de script, qui vérifie si l'utilisateur existe dans la base de données ou non, et si cela ne doit pas ajouter cet utilisateur dans cette base de données.Ajouter un utilisateur dans la base de données?

Comment puis-je faire cela?

Répondre

1

Je pense que cela a fonctionné:

IF DATABASE_PRINCIPAL_ID ('login') IS NULL
BEGIN
CREER USER [nom d'utilisateur] LOGIN [login]
FIN

^cela ne fonctionne que si le nom d'utilisateur dans la base de données est le même que le login.

0

Faites un SELECT COUNT(*), et voir si vous obtenez un 0 ou un 1.

1

Vous ne pouvez pas avoir un utilisateur en double, vous pouvez donc essayer de créer et de gérer l'erreur si elle est déjà là.

+0

@Paul Creasey, L'OP ne veut pas avoir d'utilisateurs en double d'où le message. Votre réponse ne fait que répéter ce que le PO a dit. –

+0

@Helen, il n'est pas possible d'insérer un utilisateur en double, sys.database_principals.name a une contrainte unique sur celui-ci. Je propose simplement une approche alternative. –

1

Regardez dans la vue du catalogue de l'utilisateur, sys.database_principals:

select * from [dbname].sys.database_principals 
where name = 'loginname'; 

Pour être précis à 100%, vous devez vérifier par son SID utilisateur, et non par son nom:

select * from [dbname].sys.database_principals 
where sid = SUSER_SID('loginame'); 

Notez que les utilisateurs peuvent avoir accès déjà par l'appartenance à un groupe ou à un rôle, mais c'est un sujet distinct.

Questions connexes