Récupérer un corrompu SQL Server Base de données MDF

Lorsque vous SQL Server La base de données MDF est corrompue, vous pouvez utiliser les méthodes suivantes pour récupérer les données qu'elle contient, afin de réduire la perte :

Remarque : Avant d'effectuer toute opération de récupération de données, veuillez d'abord sauvegarder vos fichiers de base de données MDF et NDF corrompus.

  1. Tout d'abord, vous pouvez essayer SQL Server commande intégrée DBCC CHECKDB pour récupérer votre base de données. En supposant que le fichier de base de données corrompu est 'MyDatabase.mdf', vous pouvez procéder comme suit pour récupérer les données qu'il contient :
    1. Restart SQL Server.
    2. N'effectuez aucune opération.
    3. In SQL Server Management Studio, exécutez les instructions SQL suivantes :
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Définit la base de données de destination en mode mono-utilisateur dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Remet la base de données de destination en mode multi-utilisateur
      

      La déclaration

      dbcc checkdb (@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      peut entraîner la perte de certaines données de votre base de données lors de l'exécution de l'opération de réparation.

      Alors que la déclaration

      dbcc checkdb (@databasename,REPAIR_REBUILD)
      

      ne causera PAS de perte de données pendant l'opération de réparation, mais cela prend plus de temps.

      Donc, si vous n'êtes pas urgent, vous pouvez d'abord essayer d'exécuter la deuxième instruction dbcc checkdb uniquement, si cette instruction ne peut pas aider à récupérer la base de données, vous pouvez alors exécuter les première et deuxième commandes dbcc checkdb.

      Après l'opération de réparation, vous pouvez appeler

      dbcc checkdb('MaBase.mdf')
      

      à nouveau pour voir si la base de données est fixe ou non.

      Des informations plus détaillées sur la commande dbcc checkdb sont disponibles sur https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Si après avoir utilisé la méthode 1, dbcc checkdb signale toujours des erreurs dans certaines tables, vous pouvez essayer SQL Server commande intégrée DBCC CHECKTABLE pour récupérer ces tables dans votre base de données. En supposant que le fichier de base de données corrompu est 'MyDatabase.mdf' et que la table que vous souhaitez réparer est 'MyTable', vous pouvez procéder comme suit pour le réparer :
    1. Restart SQL Server.
    2. N'effectuez aucune opération.
    3. In SQL Server Management Studio, exécutez les instructions SQL suivantes :
      use MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('MyTable',REPAIR_REBUILD ) exec sp_dboption @dbname,'utilisateur unique','false'
      

      La déclaration

      dbcc checktable('MaTable',REPAIR_ALLOW_DATA_LOSS)
      

      peut entraîner la perte de certaines données de votre table lors de l'exécution de l'opération de réparation.

      Alors que la déclaration

      dbcc checktable('MaTable',REPAIR_REBUILD)
      

      ne causera PAS de perte de données pendant l'opération de réparation, mais cela prend plus de temps.

      Donc, si vous n'êtes pas urgent, vous pouvez d'abord essayer d'exécuter la deuxième instruction dbcc checktable uniquement, si cette instruction ne peut pas aider à récupérer la base de données, vous pouvez alors exécuter les première et deuxième commandes dbcc checktable.

      Après avoir terminé l'opération de réparation pour toutes les tables corrompues, vous pouvez appeler

      dbcc checkdb('MaBase.mdf')
      

      à nouveau pour voir si les tables de la base de données sont fixes ou non.

    Des informations plus détaillées sur la commande dbcc checktable sont disponibles sur https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Si les méthodes 1 et 2 ne peuvent toujours pas réparer la base de données ou les tables corrompues, ou si ces méthodes ne peuvent pas récupérer les données souhaitées, vous pouvez utiliser DataNumen SQL Recovery pour récupérer les données de votre base de données MDF.