Когато вашата SQL Server MDF база данни е повредена, можете да използвате следните методи за възстановяване на данните в нея, за да намалите загубите:
Забележка: Преди да извършвате каквито и да било операции за възстановяване на данни, моля, първо направете резервно копие на вашите повредени MDF & NDF файлове от базата данни.
- Първо, можете да опитате вградената команда на SQL Server DBCC CHECKDB , за да възстановите вашата база данни. Предполагайки, че повреденият файл на база данни е 'MyDatabase.mdf', можете да извършите следното, за да възстановите данните в него:
- Рестартирайте SQL Server.
- Не извършвайте никакви операции.
- В SQL Server Management Studio, изпълнете следните SQL команди:
използвайте master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Задайте на дестинационната база данни единичен потребителски режим dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Върнете дестинационната база данни в режим за множество потребители
изявление
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
може да доведе до загуба на част от данните във вашата база данни при извършване на операцията за ремонт.
Въпреки че изявлението
dbcc checkdb(@databasename,REPAIR_REBUILD)
НЯМА да предизвика загуба на данни по време на операцията по ремонт, но отнема повече време.
Така че ако не сте в спешност, можете първо да опитате да изпълните само втората команда dbcc checkdb, ако тази команда не може да помогне за възстановяването на базата данни, тогава можете да изпълните първата и втората команди dbcc checkdb.
След операцията по ремонт, можете да повикате
dbcc checkdb('MyDatabase.mdf')
отново, за да видите дали базата данни е поправена или не.
Подробна информация за командата dbcc checkdb можете да намерите на https://docs.microsoft.com/bg-bg/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15
- Ако след използването на метод 1, dbcc checkdb все още съобщава за грешки в някои таблици, можете да опитате вградената команда на SQL Server DBCC CHECKTABLE, за да възстановите тези таблици във вашата база данни. Предполагайки, че повреденият файл на базата данни е 'MyDatabase.mdf' и таблицата, която искате да поправите, е 'MyTable', тогава може да направите следните стъпки за нейния ремонт:
- Рестартирайте SQL Server.
- Не извършвайте никакви операции.
- В SQL Server Management Studio, изпълнете следните SQL команди:
използвай 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,'single user','false'
изявление
dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
може да доведе до загуба на част от данните във вашата таблица при извършване на операцията за ремонт.
Въпреки че изявлението
dbcc checktable ('MyTable', REPAIR_REBUILD)
НЯМА да предизвика загуба на данни по време на операцията по ремонт, но отнема повече време.
Така че, ако не сте в спешност, първо можете да опитате да изпълните само втората команда dbcc checktable, ако тази команда не може да помогне за възстановяване на базата данни, тогава можете да изпълните първата и втората команда dbcc checktable.
След като завършите операцията по ремонт за всички повредени таблици, можете да извикате
dbcc checkdb('MyDatabase.mdf')
отново, за да видите дали таблиците в базата данни са поправени или не.
Подробна информация за командата dbcc checktable може да бъде намерена на https://docs.microsoft.com/bg-bg/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15
- Ако метод 1 и 2 все още не могат да коригират повредената база данни или таблиците, или ако тези методи не могат да възстановят данните, които искате, тогава можете да използвате DataNumen SQL Recovery , за да възстановите данните от вашата MDF база данни.