Restore database SQL Server with error log file / table error I/O bad page ID / Suspect

  1. Tạo mới database có tên giống database bị lỗi
  2. Stop service
  3. Overwrite with old .mdf ; xóa log file
  4. Start service
  5. Lúc này database ở trạng thái Suspect. Ta chạy script sau để phục hồi log file.
--bước 1
use master
go

sp_configure 'allow updates',1
reconfigure with override
go

--bước 2
select * from sysdatabases where name='ct2003_po'
   -- ghi lại giá trị cột status được select ra để dùng cho bước 6
update sysdatabases set status=32768 where name='ct2003_po'

--bước 3
dbcc traceon (3604)
dbcc rebuild_log('ct2003_po','d:\ct2003_po_log.ldf')
go

--bước 4
sp_resetstatus ct2003_po
go

--bước 5
use master
go

sp_configure 'allow updates',0
reconfigure with override
go

--bước 6
sp_configure 'allow updates',1
reconfigure with override
go

update sysdatabases set status=nhap_gtri_status_buoc_2 where name='ct2003_po'
go

sp_configure 'allow updates',0
reconfigure with override
go

6. Refresh database.

7. Trường hợp database vẫn còn bị lỗi do quá trình phục hồi, hay do sự cố khi bị error data, … Ta chạy thêm script sau để fix lỗi.

https://ldminh.wordpress.com/2011/08/05/how-to-restore-sql-server-2005-suspect-database/

  • EXEC sp_resetstatus ‘yourDBname’;
  • ALTER DATABASE yourDBname SET EMERGENCY /*for 2005*/
  • DBCC checkdb(‘yourDBname’)
  • ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
  • DBCC CheckDB (‘yourDBname’, REPAIR_ALLOW_DATA_LOSS)
  • DBCC CHECKTABLE (‘tableName’, REPAIR_ALLOW_DATA_LOSS)
  • ALTER DATABASE yourDBname SET MULTI_USER


This entry was posted in SQL server and tagged , , , , , , , , , , , , , , , , , , . Bookmark the permalink.