Obnovte Corrupta SQL Server Databáze MDF

Když SQL Server Databáze MDF je poškozená, můžete použít následující metody k obnovení dat v ní, abyste snížili ztrátu:

Poznámka: Před provedením jakékoli operace obnovy dat nejprve zálohujte poškozené soubory databáze MDF a NDF.

  1. Nejprve to můžete vyzkoušet SQL Server vestavěný příkaz DBCC CHECKDB obnovit vaši databázi. Za předpokladu, že poškozený databázový soubor je 'MyDatabase.mdf', můžete obnovit data v něm následujícím způsobem:
    1. Restart SQL Server.
    2. Neprovádějte žádné operace.
    3. In SQL Server Management Studio, proveďte následující příkazy SQL:
      use master declare @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - Nastavit cílovou databázi do režimu pro jednoho uživatele dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ databasename, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - Nastavit cílovou databázi zpět do režimu více uživatelů
      

      Prohlášení

      dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS)
      

      může způsobit ztrátu některých dat ve vaší databázi při provádění opravy.

      Zatímco prohlášení

      dbcc checkdb (@ databasename, REPAIR_REBUILD)
      

      nezpůsobí během opravy žádnou ztrátu dat, ale je to časově náročnější.

      Pokud tedy nejste urgentní, můžete se nejprve pokusit provést pouze druhý příkaz dbcc checkdb, pokud tento příkaz nemůže pomoci obnovit databázi, můžete provést první a druhý příkaz dbcc checkdb.

      Po opravě můžete zavolat

      dbcc checkdb ('MyDatabase.mdf')
      

      znovu, abyste zjistili, zda je databáze pevná nebo ne.

      Podrobnější informace o příkazu dbcc checkdb naleznete na https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Pokud po použití metody 1, dbcc checkdb stále hlásí chyby v některých tabulkách, můžete to zkusit SQL Server vestavěný příkaz DBCC CHECKTABLE k obnovení těchto tabulek ve vaší databázi. Za předpokladu, že poškozený soubor databáze je „MyDatabase.mdf“ a tabulka, kterou chcete opravit, je „MyTable“, pak ji můžete opravit následovně:
    1. Restart SQL Server.
    2. Neprovádějte žádné operace.
    3. In SQL Server Management Studio, proveďte následující příkazy SQL:
      použijte MyDatabase.mdf deklarovat @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_REBU ) exec sp_dboption @ dbname, 'single user', 'false'
      

      Prohlášení

      dbcc kontrolní tabulka ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      může způsobit ztrátu některých dat v tabulce při provádění opravy.

      Zatímco prohlášení

      dbcc kontrolní tabulka ('MyTable', REPAIR_REBUILD)
      

      nezpůsobí během opravy žádnou ztrátu dat, ale je to časově náročnější.

      Pokud tedy nejste urgentní, můžete se nejprve pokusit provést pouze druhý kontrolní příkaz dbcc, pokud tento příkaz nemůže pomoci obnovit databázi, pak můžete provést první a druhý kontrolní příkaz dbcc.

      Po dokončení operace opravy všech poškozených tabulek můžete zavolat

      dbcc checkdb ('MyDatabase.mdf')
      

      znovu, abyste zjistili, zda jsou tabulky v databázi pevné nebo ne.

    Podrobnější informace o příkazu dbcc checktable najdete na https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Pokud metody 1 a 2 stále nemohou opravit poškozenou databázi nebo tabulky, nebo pokud tyto metody nemohou obnovit požadovaná data, můžete použít DataNumen SQL Recovery obnovit data z vaší databáze MDF.