L'entité de sécurité de serveur "sqlLoginName" ne peut pas accéder à la base de données "myDatabaseName" dans le contexte de sécurité actuel
Description de la problématique : Lorsque vous restaurez une sauvegarde de base de données vers un autre serveur, vous pouvez rencontrer le message d'erreur ci-dessous lorsque vous essayez de vous y connecter.
Msg 916, Level 14, State 1, Line 1
L'entité de sécurité de serveur "sqlLoginName" ne peut pas accéder à la base de données "myDatabaseName" dans le contexte de sécurité actuel.
Cause : Lorsque vous restaurez une sauvegarde de base de données vers un autre serveur, vous pouvez rencontrer un problème avec des utilisateurs orphelins. C'est-à-dire que le SID de la vue système sysuser n'est pas mappé avec un SID de la vue syslogin existant.
Résolution : Pour détecter des utilisateurs orphelins vous pouvez lancer la commande ci-dessous :
USE <myDatabaseName>
sp_change_users_login @Action='Report';
Vous pouvez constater que les SID ne coïncident pas entre les vues système : sys.sysusers et sys.syslogins
USE <myDatabaseName>
SELECT sid FROM sys.sysusers WHERE name = 'sqlLoginName'
SELECT sid FROM sys.syslogins WHERE name = 'sqlLoginName'
Pour corriger ce problème de lien entre le compte de connexion serveur spécifié par <login_name> et l'utilisateur de la base de données spécifié par <database_user>, vous pouvez exécuter la commande ci-dessous
USE <myDatabaseName>
EXEC sp_change_users_login @Action='update_one', @UserNamePattern='sqlLoginName',@LoginName=' sqlLoginName ';
Pour plus d'information :
Dépannage des utilisateurs orphelins
https://msdn.microsoft.com/fr-fr/library/ms175475.aspx
PRB : La rubrique «Dépannage des utilisateurs orphelins» dans la documentation en ligne est incomplète
https://support.microsoft.com/kb/274188/
Pour plus d'information : sp_addlogin (Transact-SQL)
https://msdn.microsoft.com/fr-fr/library/ms173768.aspx
Michel Degremont| Microsoft EMEA
Product Support Services Developer -SQL Server Core Engineer |