web-dev-qa-db-fra.com

L'utilisateur Windows Login Name a été modifié dans la session AD et Session dans SQL 2008 Profiler affiche l'ancien nom de connexion Windows.

Contexte: Un utilisateur a eu son nom changé dans Active Directory à partir de domaine\OldName à domain\newname et connecté avec succès au réseau avec le domaine\newname et le domaine\OldName apparaît dans les colonnes LoginName et NTUSNAME dans le profileur.

Les autorisations SQL Server de l'utilisateur sont accordées via un groupe configuré dans SQL Server Security.

La question: Quelqu'un a-t-il observé ce comportement et sachez pourquoi SQL Server ramasse toujours le domaine\OldName (SP_WHO2 montre les mêmes informations)?

BTW, j'ai passé des temps considérables à rechercher avant de poster une question ici et il me semble que ce n'est pas un problème réel avec le profileur/SQL 2008 R2.

6
jl01

Je suppose que je ne peux pas commenter votre question car c'est la première fois que j'ai utilisé la pile Exchange, mais s'agit-il d'un groupe d'annonces que l'utilisateur est dans? Parfois, les gens disent groupe quand ils signifient un rôle SQL afin que je voulais juste avoir des éclaircissements.

La raison pour laquelle je vous demande est du fait que si l'utilisateur dispose d'une connexion sur le serveur de domaine\OLDURER lorsque vous modifiez le nom en annonce vers Domaine\NewUser, vous devez entrer dans SQL et modifier le login vers Domaine\NewUser. J'ai fait cela et cela fonctionne parfaitement bien et vous n'avez rien à faire aussi drastique que le redémarrage SQL. Je ne sais pas si le nom du compte passera éventuellement à la nouvelle au fil du temps, mais je suppose que je ne serais pas.

Je ne sais cependant pas ce qui se passe lorsque l'utilisateur fait partie d'un groupe d'annonces qui possède des autorisations et ne disposant pas d'une connexion sur le serveur. D'où la nécessité de clarifier afin que je puisse examiner cela.

5
Shane Thompson

J'ai rencontré le même problème dans une instance SQL Server 2012 (SP2 appliquée). Je n'ai pas encore trouvé la cause première, mais nous examinerons le mécanisme de mise en cache, comme suggéré par StanleyJohns.

Par accident, j'ai trouvé une solution simple qui a fonctionné pour moi sans redémarrer le serveur. J'ai créé une connexion Windows authentifiée pour l'ancien nom d'utilisateur (oui, qui a fonctionné), puis le déposé - problème résolu.

Après la création/goutte, je n'ai pas pu créer la même connexion une seconde fois, il semble donc que la "liste de connexion" est une autre façon de forcer l'ancien nom d'utilisateur hors du cache Ad.

1
Wim

SQL Server peut prendre un certain temps pour déterminer le changement
[.____] Cela met en cache basé sur le "SID" qui est inchangé. Pas de mal fait cependant.

Je ne connais pas les règles exactes, mais je l'ai vu arriver. À l'extrême, il volonté Clear après un redémarrage du serveur SQL s'il est important

Vérifiez également SYS.SERVER_PRINCIPALS ET LES SYS.DATABASE_PRINCIPALs pertinents pour toutes les entrées. Cela peut arriver si les utilisateurs possèdent des objets (par exemple, créer une table sans qualificatif de schéma).

1
gbn

Dans mon cas, la seule chose qui a fonctionné est de supprimer l'utilisateur et de reporter l'utilisateur. Remarque Vous devez vérifier et supprimer la propriété des emplois SQL ainsi que DO de n'importe quelle base de données.

0
gusmundo

Puisqu'elle est membre du groupe d'annonces, elle a toujours accès. Son ancien nom d'utilisateur montrant dans SQL Server pourrait provenir de cache de connexion.

Vous pouvez essayer de fermer toutes les connexions que l'ancien nom de connexion a, car cela pourrait cacher le SID pour sa connexion. Étant donné que la connexion a été renommée dans l'annonce, je ne pense pas qu'il changera le SID afin que le mappage soit toujours là pour que SQL Server fonctionne avec l'ancien nom.

0
user507

Les changements de publicité prendront du temps pour se propager. En outre, le jeton d'authentification en cache et c'est ce qui permet d'accéder, tout en affichant le nom de connexion plus ancien.

Vous pouvez essayer de purger le cache: Net Use * /delete /y à la ligne de commande.

Ou essayez de forcer les informations d'identification de l'annonce à mettre à jour: control userpasswords2 à la ligne de commande. Ensuite, allez à l'onglet "Avancé" et sélectionnez "Gérer les mots de passe", cela vous permettra de modifier les mots de passe réseau enregistrés.

Cela vous évitera de devoir redémarrer le serveur.

0
StanleyJohns