Comment réparer l’erreur irrécupérable 823 de la base de données SQL Server ?

Parfois, nous recevons l’erreur 823 de SQL Server et lorsque cette erreur se produit, il est difficile d’estimer le niveau de gravité, s’il persiste quels problèmes peut-il entraîner et quelle est la solution. Dans cet article, nous allons montrer les causes et comment résoudre le problème du numéro d’erreur 823 de SQL Server.

Quelle est l’erreur Msg 823 dans la base de données SQL Server ?

C’est un problème dans SQL Server qui peut être lié à :

  1. L’erreur du système d’exploitation
  2. Une erreur IO

Dans cet article, nous allons parler de l’erreur IO. Le message d’erreur ressemblera à ce message :

Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 The operating system returned error 38 (Reached the end of the file.) to SQL Server during a read at offset 0x000000a72c0000 in file ‘C:\Program Files\Microsoft SQL Server\ MSSQL\DATA\db.mdf’. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online

  • L’erreur indique le fichier de données (généralement un fichier .MDF) et l’opération peut être en lecture ou en écriture. Le décalage est le décalage d’octet physique à partir du début du fichier. Il est calculé comme la page logique et est le nombre d’offset divisé par 8192.
  • Erreur 832 est le numéro d’erreur. La gravité 24 signifie et implique qu’il peut s’agir d’une défaillance du support et qu’il peut être nécessaire d’appeler le fournisseur de matériel et / ou de restaurer la base de données.
  • L’état 4 est utilisé pour différencier le message d’erreur provenant d’autres erreurs ayant le même nombre, mais dans un état différent.

Quels sont les problèmes associés à l’erreur 823 IO ?

Ce problème peut être lié aux problèmes suivants :

  1. Une page déchirée
  2. ID de page incorrect
  3. Octets transférés insuffisants

Qu’est-ce qu’une page déchirée ?

C’est une page qui a été mal écrite. Nous pourrions dire que Détection de page déchirée écrit un bit tous les 512 octets de la page et vous permet de détecter si la page n’est pas correctement écrite sur le disque, mais ne vous dit pas si les données stockées sur le disque sont réellement correctes. Les octets ont peut-être été écrits de manière incorrecte.

Quel est le message d’erreur pour l’erreur de page déchirée ?

L’erreur sera comme suit :

2015-08-05 16:51:18.90 spid17 Error: 823, Severity: 24, State: 2
2015-08-05 16:51:18.90 spid17 I/O errors (torn page) detected during read at offset 0x00000094004000 in file ‘c:\Program Files\Microsoft SQL Server\MSSQL\data\tempdb.mdf’

Comment détecter une erreur IO d’une page déchirée ?

Vous pouvez détecter ces erreurs lorsque vous exécutez la commande CHECKDB dans votre base de données.

Qu’est-ce qu’un ID de page incorrect ?

Cela se produit lorsque l’ID de la page d’en-tête n’est pas le même que celui utilisé lors de la lecture sur le disque.

Pourquoi l’erreur d’octets insuffisants transférés est-elle produite dans SQL Server ?

Cela signifie que l’appel API a été invoqué avec succès, mais les octets transférés ne sont pas ceux attendus.

Comment résoudre l’erreur SQL Server 823 ?

La première étape consiste à exécuter une commande DBCC CHECKDB et à essayer de réparer la base de données en utilisant les phrases suivantes :

La base de données doit être en mode mono-utilisateur. Pour passer en mode mono-utilisateur, vous pouvez utiliser les phrases T-SQL suivantes :

Une autre façon de procéder consiste à cliquer avec le bouton droit de la souris sur la base de données dans SSMS et à accéder à la page Options. Pour restreindre l’accès, sélectionnez SINGLE USER :

Définir la base de données en mode mono-utilisateur

Exécutez à nouveau « DBCC CHECKDB » pour vérifier que la base de données a été réparée :

  1. Si le problème persiste, il peut s’agir d’un problème matériel, vous devrez peut-être réparer votre disque dur. Contactez le personnel informatique en charge du matériel. Vérifiez également s’il y a des problèmes de fragmentation sur le disque dur.
  2. Une autre option peut être de restaurer votre base de données avec une sauvegarde. Une fois la base de données restaurée, exécutez CHECKDB pour vérifier que le problème est résolu.
  3. Si vous avez une erreur de page déchirée, vous pouvez utiliser CHECKSUM et la détection de page déchirée pour réparer et vérifier les erreurs.

Une autre option serait de télécharger Stellar Repair for MS SQL. Ce logiciel peut être téléchargé à partir du bouton TÉLÉCHARGEMENT GRATUIT :

Ce logiciel réparera le fichier .MDF. Vous devrez d’abord arrêter le service SQL Server. Il est recommandé d’arrêter le service à l’aide de SQL Server Management Studio (SSMS) ou du Gestionnaire de configuration SQL Server.

Arrêtez le service SQL Server

Si vous ne savez pas où se trouvent vos fichiers de données, vous pouvez utiliser les commandes T-SQL suivantes (le service SQL Server doit être démarré) :

Une fois que le fichier .MDF est spécifié, appuyez sur le bouton Repair :

Remarque : Si vous avez un ou plusieurs fichiers de données secondaires (fichier .NDF) associés à votre base de données, placez tous les fichiers NDF à l’emplacement du fichier MDF. Une fois que tout est terminé, vous pouvez redémarrer le service SQL Server et réexécuter la commande CHECKDB.

L’outil de réparation SQL répare les fichiers .MDF et .NDF et vous ne verrez plus l’erreur SQL Server 823.

Conclusion

Dans cet article, nous avons appris différentes raisons qui ont provoqué l’erreur SQL Server 823 et expliqué comment résoudre ce problème. Ce problème peut être dû à du matériel (erreurs de disque, pannes de courant) ou à des problèmes de système. Nous montrons également comment résoudre avec une sauvegarde, un CHECKDB et enfin en utilisant Stellar Repair for MS SQL.

Stellar Repair for MS SQL est un outil de réparation SQL simple. Si vous avez des questions, n’hésitez pas à écrire vos questions et commentaires.