无ldf文件情况下恢复数据库数据纪实
前幾天,我采用分離數據庫的辦法,清理了某MOSS站點對應的數據庫日志(日志文件膨脹的太快了,正確的做法用壓縮)。
我發現MOSS某站點對應的數據庫掛掉了。盡管之前我備份了完整的mdf和ldf文件,放在data目錄下,重新放回去,SQL管理器中只能看到這個數據庫的圖標,無法展開看到表等等。
環境:
MOSS2007、MS SQL2005、Windows2003
詳細的恢復過程如下:
問題描述:
估計是SQL Server 2005數據庫日志文件可能會發生損壞,例如硬件故障、計算機非正常重啟或關機等等。
先后出現的癥狀如下:
1、在SQL Server Management Studio中顯示數據庫處于置疑(suspect)狀態,無法展開數據庫的樹形結構(我在今天恢復的時候連這個狀態都沒有,只有個圖標,跟上周在addison座位上看到的癥狀一樣)。
2、事件日志可能會出現如下錯誤信息:
Could not redo log record (21737:686:9), for transaction ID (0:2334886), on page (1:37527), database ”Test” (database ID 15). Page: LSN = (21735:299:5), type = 2. Log: OpCode = 3, context 19, PrevPageLSN: (21737:615:1). Restore from a backup of the database, or repair the database.
During redoing of a logged operation in database ”Test”, an error occurred at log record ID (76116:286:2). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.
3、無法分離數據庫
4、用Create DATABASE DBName ON ( FILENAME = N”DBFile” ) FOR ATTACH_REBUILD_LOG附加數據庫時出現提示:The log cannot be rebuilt because the database was not cleanly shut down.
恢復步驟:
1、停止數據庫服務。
2、將需要恢復的數據庫文件復制到另外的位置。
3、啟動數據庫服務。
4、確認要恢復的數據庫文件已經成功復制到另外的位置,然后在SQL Server Management Studio中刪除要恢復的數據庫。
5、新建同名的數據庫(數據庫文件名也要相同)。
6、停止數據庫服務。
7、用第2步中備份的.mdf文件覆蓋新數據庫的同名文件。
8、啟動數據庫服務。
9、運行alter database dbname set emergency,將數據庫設置為emergency mode
10、運行下面的命令就可以恢復數據庫(名稱是WSS_Content)(我是依次執行的):
?
代碼 ?1--置數據庫與緊急狀態?2ALTER?DATABASE?WSS_Content?SET?EMERGENCY?
?3--允許對系統目錄進行即席更新
?4sp_configure?'allow?updates',?1?
?5go?
?6reconfigure?with?override?
?7go?
?8--單一用戶模式
?9sp_dboption?'WSS_Content',?'single?user',?'true'
10--創建此數據庫對應的日志文件
11dbcc?checkdb(WSS_Content,REPAIR_ALLOW_DATA_LOSS)
12--之后可以執行多用于模式的命令
13dbcc?checkdb(WSS_Content,REPAIR_REBUILD)
14--多用戶模式
15exec?sp_dboption?'WSS_Content',?'single?user',?'false'
16--禁止對系統目錄進行即席更新
17sp_configure?'allow?updates',?0?
18go?
19reconfigure?with?override?
20
注意網上很多關于SQL2000的做法,其中創建日志的命令dbcc rebuild_log在SQL2005中無效。
總結:估計此數據庫的日志文件記錄了錯誤的信息。看來日志我們要恰當的利用。
轉載于:https://www.cnblogs.com/mingle/archive/2009/11/30/1613952.html
總結
以上是生活随笔為你收集整理的无ldf文件情况下恢复数据库数据纪实的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈点技术吧,6万人在线每秒实时更新的解决
- 下一篇: LLBLGen 关于类型转换