2009-09-09

SQL Server log 大爆炸

前一星期有個同事因為SQL Server 2008 Transcation log 檔案太大,導致SQL Server無法運作,他做了以下的動作,將SQL Server的執行程序停止,手動刪除log實體檔案,再次啟動SQL Server的程序,完蛋了.......叫不起來

後來依照以下的方式把資料庫給救回來囉~~紀錄一下
假設資料庫名稱為OhMyGod
1. 停止SQL Server, 將原mdf檔移走
2. 開啟SQL Server, 建立新的OhMyGod資料庫.
3. 停止SQL Server
4. 將損壞的mdf覆蓋回新建的mdf檔,並刪除新建的log檔
5. 開啟SQL Server
3. 設定OhMyGod資料庫狀態為EMERGENCY:
ALTER DATABASE OhMyGod SET EMERGENCY
4. 設定OhMyGod資料庫模式為"單一使用者":
sp_dboption 'OhMyGod', 'single user', 'true'
5. 檢查指定資料庫中所有物件的配置、結構和邏輯完整性:
DBCC CHECKDB (OhMyGod, REPAIR_ALLOW_DATA_LOSS)
6. 還原OhMyGod資料庫模式:
sp_dboption 'OhMyGod', 'single user', 'false'
7. 設定OhMyGod資料庫狀態為
ONLINE:ALTER DATABASE OhMyGod SET ONLINE

完成以上動作,資料庫救回來了,萬幸萬幸~~