Partager via


Dépannage de l'erreur 3313, 3314, 3414 ou 3456 (SQL Server)

Une erreur pendant une opération de restauration par progression, d'annulation ou de récupération sur une base de données SQL Server place la base de données dans l'état SUSPECT. De telles erreurs incluent 3313 (erreur de restauration par progression du journal), 3314 (erreur d'annulation du journal), 3414 (erreur de récupération qui empêche le redémarrage de base de données) et erreur 3456 (erreur de restauration par progression sur une transaction enregistrée).

Explication

Une opération de restauration par progression, d'annulation ou de récupération place la base de données dans l'état SUSPECT car le groupe de fichiers primaire, et éventuellement d'autres groupes de fichiers, sont suspects et peuvent être endommagés. La base de données n'est pas disponible et une action utilisateur est nécessaire pour résoudre le problème.

[!REMARQUE]

Si cette erreur se produit pour tempdb, l'instance SQL Server s'arrête.

Action de l'utilisateur

Une opération de restauration par progression, d'annulation ou de récupération peut être provoquée par une situation temporaire ou par un échec permanent qui se produit chaque fois que vous essayez de démarrer la base de données.

[!REMARQUE]

Lorsque l'une de ces conditions d'erreur est rencontrée, SQL Server génère généralement trois fichiers dans le dossier LOGSQL Server. Le fichier SQLDumpnnnn.txt contient des informations de diagnostic avancées concernant les échecs, notamment des détails relatifs à la transaction et la page qui a rencontré le problème. Ces informations sont généralement utilisées par l'équipe du Support technique pour analyser la raison de l'échec.

Pour plus d'informations sur la cause d'une occurrence donnée de l'erreur 3313, 3314, 3414 ou 3456, examinez le journal des événements Windows pour rechercher une erreur précédente qui indique l'échec spécifique. Les actions appropriées de l'utilisateur varient selon que les informations dans le Journal des événements Windows indiquent que l'erreur SQL Server a été provoquée par une situation temporaire ou un échec permanent.

Pour une situation temporaire :

  1. Essayez de mettre la base de données en ligne en exécutant l'instruction ALTER DATABASETransact-SQL suivante :

    ALTER DATABASE <database name> SET ONLINE;
    
  2. Pour déterminer si la récupération s'est correctement terminée et si la base de données a été mise en ligne, consultez le journal des erreurs SQL Server et l'affichage catalogue sys.databases.

  3. Si la base de données est en ligne, exécutez l'instruction Transact-SQLDBCC CHECKDB pour vérifier si la base de données est cohérente.

Pour un échec permanent :

Recherchez l'erreur que vous voulez résoudre (3313, 3314, 3414 ou 3356) dans le journal des erreurs SQL Server, et examinez les messages qui la précèdent pour déterminer si vous pouvez les corriger manuellement. Si vous pouvez corriger les erreurs antérieures, effectuez l'une des procédures suivantes :

  • Restaurez et vérifiez la base de données (procédure recommandée), comme suit :

    1. Essayez d'effectuer une sauvegarde de fichier journal après défaillance.

    2. Restaurez la base de données à partir d'une sauvegarde de base de données complète, éventuellement suivie d'une sauvegarde de base de données différentielle, à l'aide de l'instruction Transact-SQLRESTORE …WITH NORECOVERY.

    3. Si la base de données utilise le mode de récupération complète, appliquez toutes les sauvegardes de fichier journal des transactions effectuées après la sauvegarde complète, ou différentielle, de la restauration jusqu'au point de défaillance, à l'aide de RESTORE LOG … WITH NORECOVERY.

    4. Après avoir restauré la base de données aussi près que possible du point de défaillance, récupérez la base de données en utilisant RESTORE DATABASE <nom_base_de_données> WITH RECOVERY.

    5. Une fois la base de données mise en ligne, exécutez l'instruction DBCC CHECKDBTransact-SQL pour vérifier si la base de données est cohérente.

  • Essayez de mettre la base de données en ligne en suivant la procédure décrite pour l'échec temporaire, précédemment dans cette section.

  • Utilisez le mode urgence, comme suit :

    1. Faites passer la base de données dans l'état EMERGENCY en exécutant l'instruction Transact-SQLALTER DATABASE suivante :

      ALTER DATABASE <database_name> SET EMERGENCY; 
      
    2. Examinez la sortie de l'instruction ALTER DATABASE et du journal des erreurs SQL Server.

    3. Examinez l'état de la base de données dans l'affichage catalogue sys.databases.

    4. Effectuez une vérification de cohérence sur la base de données à l'aide de l'instruction DBCC CHECKDB pour comprendre la nature et l'étendue des dommages.

    5. Après avoir évalué la sortie de DBCC CHECKDB, vous pouvez choisir d'exécuter DBCC CHECKDB avec l'option REPAIR_ALLOW_DATA_LOSS.

      AttentionAttention

      Avant d'utiliser cette option, examinez attentivement les informations relatives à la résolution des erreurs en mode urgence dans la base de données, disponibles dans la rubrique DBCC CHECKDB (Transact-SQL) de la documentation en ligne de SQL Server.

[!REMARQUE]

Pour plus d'informations sur les actions possibles en cas de problèmes matériels en rapport avec l'erreur 3313, 3314, 3414 ou 3356, consultez MSSQLSERVER_824.

Étapes permettant d'éviter cette erreur

Pour éviter de rencontrer à nouveau cette situation, procédez comme suit :

  1. Examinez le journal des erreurs SQL Server et les journaux des événements Windows pour tous les problèmes au niveau du système qui peuvent contribuer à cette erreur.

  2. Pour éliminer tout problème connu dans le produit qui mène à cette situation, appliquez la mise à jour cumulative la plus récente pour votre version de SQL Server.