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 |