Коли ти SQL Server База даних MDF пошкоджена, ви можете скористатися такими методами, щоб відновити дані в ній, щоб зменшити втрату:
Примітка. Перш ніж виконувати будь-які операції з відновлення даних, спершу створіть резервні копії пошкоджених файлів бази даних MDF і NDF.
- Перш за все, ви можете спробувати SQL Server вбудована команда DBCC CHECKDB щоб відновити вашу базу даних. Якщо припустити, що пошкоджений файл бази даних — «MyDatabase.mdf», ви можете зробити наступне, щоб відновити дані в ньому:
- Restart SQL Server.
- Не виконуйте жодних операцій.
- In SQL Server Management Studio, виконайте такі оператори SQL:
use 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/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15
- Якщо після використання методу 1 dbcc checkdb все ще повідомляє про помилки в деяких таблицях, ви можете спробувати SQL Server вбудована команда DBCC CHECKTABLE для відновлення цих таблиць у вашій базі даних. Якщо припустити, що пошкоджений файл бази даних — «MyDatabase.mdf», а таблиця, яку ви хочете відновити, — «MyTable», ви можете виконати такі дії, щоб відновити його:
- Restart SQL Server.
- Не виконуйте жодних операцій.
- In SQL Server Management Studio, виконайте такі оператори SQL:
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,'single user','false'
Заява
dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
може призвести до втрати деяких даних у вашій таблиці під час виконання операції відновлення.
Поки заява
dbcc checktable('MyTable',REPAIR_REBUILD)
НЕ призведе до втрати даних під час ремонту, але це забирає більше часу.
Отже, якщо ви не в режимі термінового, ви можете спочатку спробувати виконати другий оператор контрольної таблиці dbcc, якщо цей оператор не допоможе відновити базу даних, ви можете виконати першу та другу команди контрольної таблиці dbcc.
Після завершення операції відновлення для всіх пошкоджених таблиць ви можете зателефонувати
dbcc checkdb('MyDatabase.mdf')
ще раз, щоб побачити, чи таблиці в базі даних виправлені чи ні.
Більш детальну інформацію про команду dbcc checktable можна знайти за адресою https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15
- Якщо методи 1 і 2 все ще не можуть виправити пошкоджену базу даних або таблиці, або якщо ці методи не можуть відновити потрібні дані, ви можете використовувати DataNumen SQL Recovery щоб відновити дані з бази даних MDF.