Les ouvertures de session des utilisateurs et autorisations sur une base de données peuvent être incorrectes après la restauration de la base de données

Traductions disponibles Traductions disponibles
Numéro d'article: 168001 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Symptômes

Si un vidage d'une base de données utilisateur de SQL Server est restaurée à un autre serveur SQL (tel qu'un serveur de sauvegarde à chaud) ou dans le même SQL Server après la reconstruction ou de recharger une ancienne version de la base de données master, les ouvertures de session des utilisateurs et autorisations sur la base de données peuvent être incorrectes.

Ce problème peut faire apparaître de différentes manières :
  • Lors de la connexion à un serveur 6.x, les utilisateurs peuvent recevoir le message d'erreur suivant :
    Msg 4002, niveau 14, état 1, serveur Microsoft SQL Server, ligne 0
    Connexion a échoué
    DB-Library : Connexion incorrecte.
  • Lors de la connexion à un serveur 7.0, les utilisateurs peuvent recevoir le message d'erreur suivant :
    Msg 18456, niveau 14, état 1,
    Échec de la connexion de l'utilisateur '% ls'.
  • Lors de la tentative d'accès des objets dans la base de données, les utilisateurs peuvent recevoir le message d'erreur suivant :
    Msg 229, niveau 14, état 1
    %s l'autorisation refusée sur l'objet %. * s, de la base de données %. * s, %.*s propriétaire
  • Lors de la tentative de création d'une connexion d'accès et accorder l'accès à la base de données restaurée ou ajouter l'utilisateur à la base de données, le message d'erreur suivant peut être affiche :
    Microsoft SQL-DMO (SQLState de ODBC : 42000) erreur 15023 : utilisateur ou le rôle «%s» existe déjà dans la base de données en cours.
  • Les utilisateurs peuvent avoir des autorisations sur les objets pour lesquels ils précédemment ne l'a pas fait.

Cause

Informations d'ouverture de session utilisateur sont stockées dans la table syslogins dans la base de données master. En modifiant les serveurs, soit en modifiant ces informations par la reconstruction ou la restauration d'une ancienne version de la base de données master, les informations peuvent être différentes à partir de la création de la sauvegarde de base de données utilisateur. Si les ouvertures de session n'existent pas pour les utilisateurs, ils recevront un message d'erreur indiquant «La connexion a échoué» lorsque vous tentez d'ouvrir une session sur le serveur. Si les ouvertures de session utilisateur existent, mais le SUID valeurs (6.x) ou des SID valeurs (7.0) dans mastersyslogins et la table sysusers de la base de données utilisateur diffèrent, les utilisateurs peuvent avoir des autorisations différentes que prévu dans la base de données utilisateur.

Remarque Si vous utilisez Microsoft SQL Server 2005, la table syslogins et la table sysusers sont implémentés comme vues de compatibilité. Ces vues sont sys.syslogins et sys.sysusers. Pour plus d'informations sur les vues de compatibilité, consultez la rubrique «Vues de compatibilité (Transact-SQL)» dans la documentation en ligne de SQL Server 2005.

Contournement

Pour contourner ce problème, effectuez l'une des opérations suivantes :
  • Si des scripts en cours sont disponibles pour ajouter des ouvertures de session, des utilisateurs et des autorisations, supprimez et recréez les à partir de scripts. Pour obtenir des exemples d'utilisation de scripts pour transférer les connexions entre serveurs, consultez l'article de base de connaissances Microsoft suivant :
    246133Comment faire : Transférer des noms d'accès et des mots de passe entre instances de SQL Server
    240872Comment résoudre les problèmes d'autorisations lors d'une base de données est déplacée entre les serveurs SQL
  • Vous pouvez utiliser la procédure stockée sp_change_users_login pour réassocier les relations entre les tables syslogins, sysusers et sysalternates. Toutefois, la procédure effectue des estimations les plus précises sur les liaisons et peut permettre à un utilisateur plus de privilèges d'accès que prévu. L'exécution de la procédure avec l'option de rapport tout d'abord pour générer une liste d'utilisateurs qui seront modifiés. Par la suite, vous devez vérifiez que les utilisateurs concernés disposent des autorisations appropriées. Sachez également que la procédure sp_change_users_login ne résout pas des problèmes d'autorisation dérivés les ouvertures de session et les utilisateurs créés dans un ordre différent sur la base de données où la sauvegarde est restaurée.
  • Restaurer un vidage de la base de données master à partir du moment de la sauvegarde de base de données utilisateur sur le serveur avant de charger la base de données utilisateur. Cette opération garantit que toutes les informations utilisateur présentes dans la base de données utilisateur correspond à correctement avec la table syslogins dans master.

    Avertissement : la base de données master contient des informations au niveau du serveur et affecte toutes les bases de données sur le serveur. En restaurant la base de données master, vous risquez de rencontrer des ID utilisateur supplémentaires et/ou de bases de données perdues ou disposant des autorisations incorrectes. Toutes les modifications au masque survenues depuis le moment de la sauvegarde seront perdues. Utilisez uniquement cette méthode si vous êtes certain que la version de sauvegarde de la base de données master contient des informations précises sur la base de données utilisateur en question et toutes les autres bases de données sur le serveur.
  • Utilisation Transfer Manager (pour 6.x) ou DTS (pour 7.0) pour copier les connexions. Sachez que les mots de passe sera pas transféré à l'aide de cette méthode.
  • Contactez votre fournisseur d'assistance principal.

Propriétés

Numéro d'article: 168001 - Dernière mise à jour: mardi 28 mars 2006 - Version: 5.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 6.0 Standard
  • Microsoft SQL Server 6.5 Édition Standard
  • Microsoft SQL Server 7.0 Standard
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Mots-clés : 
kbmt kbprb kbusage KB168001 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 168001
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com