Un post rapide de chez un client pour livrer une solution simple…
Pour rassurer tout le monde tout de suite, je ne vais frapper personne ; je dis “corriger” dans le sens de “réparer”.
Problème : vous restaurez une base de données et, évidemment, les utilisateurs ne sont plus mappés aux logins (Connexions dans SSMS en fr-FR) .
Evidemment, on a le problème si les SID sont différents évidemment, comme dans le cas d’un changement de machine/domaine.
C’est ce qu’on appelle des utilisateurs orphelins (orphan users)
Solutions :
- mode bourrin : supprimer l’utilisateur et le recréer
- mode propre (car il y a peut-être beaucoup de permissions placées sur l’utilisateur) : utiliser la procédure sp_change_users_login
Ex:
exec sp_change_users_login 'Update_One', 'TestJPR', 'TestJPR'
PS : dans la prochaine version de SQL Server (Denali), il y aura les Contained Databases qui permettront de ne plus avoir de LOGIN associés aux USERS d’une base.
sp_change_users_login est deprecated, il faut utiliser :
ALTER USER TestJPR WITH LOGIN = ‘TestJPR’