Blog

sp_change_users_login : Utilisateurs orphelins


En cas de restauration d’une base de données sur une autre instance SQL Server et bien que les logins soient présent sur celle-ci, il est  impossible de se connecter sur la base de données restaurée, on obtient le message d’erreur suivant : Login failed. Le premier réflexe est de supprimer le login au niveau de l’instance et de le recréer mais au moment de l’attribution des droits sur la base de données impactée, on obtient le message d’erreur suivant : User already exists in current database. Mais que se passe t-il ? Il s’agit simplement d’une désynchronisation des SID entre les logins au niveau de l’instance et les users au niveau de la base de données restaurée (droits). Pour remédier à ce problème, utiliser le contexte de la base de données restaurée et exécuter l’instruction suivante :

Cette procédure permet d’effectuer un mapping entre les logins et users de la base de données restaurée.

Pour appliquer cette procédure sur toutes les bases de données, soit l’intégralité de l’instance, exécuter cette requête :

Cela étant, on peut très bien s’affranchir du mapping en effectuant une copie des logins sur l’instance cible comprenant les SID et mot de passe de la source, voir :

https://www.concatskills.com/2016/08/15/copie-logins-dune-instance-a-lautre/

Auteur

Expert SQL Server - sp_change_users_login : Utilisateurs orphelins - SQL Server  - avatar_ninja_tete-150x150
Sarah Béquet
Archietcte Data Microsoft, les maîtres mots sont : performance, industrialisation, méthodologie & bonne humeur.
error: