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.
- 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:
- Restart SQL Server.
- Neprovádějte žádné operace.
- 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
- 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ě:
- Restart SQL Server.
- Neprovádějte žádné operace.
- 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
- 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.