• Đăng ký
  • Đăng nhập

Sửa lỗi Datbase Suppect trong SQL

📅 — 👀 808 — 👦

Trang này có hữu ích không?

👍 Có (15)        👎 Không (16)


Giả sử tên DB của mình là CT2003_PO và mình chỉ có 1 file data là CT2003_PO_data.MDF (mất tiu file log rùi). Các bước thực hiện như sau :

B1: Các bạn tạo mới một database có tên giống với database mà chúng ta cần Attach vào đó. Ở đây tên DB sẽ là 'CT2003_PO'. Lúc này SQL sẽ tự tạo ra 2 file Data và file Log của DB mới.

B2: Các bạn STOP SQL Server đi, sau đó các bạn copy file Data mà chúng ta không attach được override lên file Data mà SQL mới tạo ra cho DB mới. Sau đó các bạn xóa đi file Log mà SQL sinh ra cho database này.....

B3: Các bạn START SQL Server lên, lúc này khi vào Enterprise Manager chúng ta sẽ thấy database HeThong sẽ có màu xám xịt và status của nó hiện thời sẽ là Suspect Mode...Các bạn cứ yên tâm, ko có gì đâu.hi hi hi...

B4: Chúng ta vào Query Anylizer và gõ đoạn code sau và thực thi chúng. Đoạn code này cho phép chúng ta update các system catalog:

use master go sp_configure 'allow updates',1 reconfigure with override go

B5: Tiếp tục chúng ta sẽ thực thi đoạn code tiếp theo:

select * from sysdatabases where name='CT2003_PO'

khi thực thi xong đoạn code này, chúng ta hãy lấy giấy viết và ghi lại trường status của database này. VD ở đây status là 123456 đi nhé
Sau đó các bạn thực thi đoạn code này để chuyển Mode của datbase HeThong từ Suspect Mode trở thành Emergency Mode:

update sysdatabases set status=32768 where name='CT2003_PO'

B6: Chúng ta STOP SQL Sever và START lại.

B7: Chúng ta thực thi đoạn code tiếp theo để hệ thống tự động phát sinh lại file Log cho database này

dbcc traceon (3604) dbcc rebuild_log('CT2003_PO','Thu_Muc_Chua_Data_SQLCT2003_PO_Log.LDF') go

B8: Thực thi đoạn code sau để reset lại status của database này

sp_resetstatus CT2003_PO go

B9: Thực thi đoạn code sau:

use master go sp_configure 'allow_updates',0 reconfigure with override go

B10: Thực thi đoạn code sau để set lại status cho database HeThong

sp_configure 'allow updates',1 reconfigure with override go update sysdatabases set status= gia_tri_status_ma_chung_ta_ghi_lai_luc_dau (VD ở đây status là 123456) where name='CT2003_PO' go sp_configure 'allow updates',0 reconfigure with override go

B11: Sau khi thực hiện đúng với những bước trên, các bạn vào lại Enterprise Manager và xem lại Status của database của mình. Lúc này chắc chắn database của các bạn sẽ đang trong trạng thái online. he he

Trả lời


📁 Thủ thuật
🔖 ,