LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
筆者的一個大小為2 TB的SQL Server的database的LDF文件在玩存儲盤映射的過程中莫名其妙的丟失了. 好在MDF文件還在. 筆者慌了, Bruce Ye告訴筆者, 不用著急, 光用MDF也可以把數據庫弄回來的. 筆者就問Bruce, 假設我可以容忍LDF中信息的丟失的話, 那么該如何恢復這個數據庫呢?
?
我們執行了下面的步驟:
1. 在SQL Server Management Studio中刪除狀態為Recovery Pending的(即丟失了LDF的)問題數據庫.
2. 重命名老的MDF文件.
3. 重建一個新的數據庫, 名字跟剛剛刪除的數據庫完全一樣. 注意, 新的MDF的位置跟我們老的MDF的文件的位置相同. 這里的LDF文件的位置選在你想要存放的最終位置上(這個就是你所要的被恢復的LDF文件了).
4. 停掉SQL Server服務, 將新的MDF重命名掉, 老的MDF命名回原來的名字.
5. 啟動SQL Server服務, 這時這個數據庫的狀態會變為Recovery Pending. 我們開始執行下面的腳本.
alter database contentdb1 set emergency alter database contentdb1 set single_user with rollback immediate alter database contentdb1 rebuild log on (name=ContentDB1_log, filename='E:\CDBLOG\contentdb1log.ldf') ALTER DATABASE contentdb1 SET MULTI_USER with rollback immediate5. 這時數據庫的狀態就應該恢復正常了.
?
問題解決.
?
筆者在運行上面的腳本的時候, 遇到了一個報錯. 在運行了命令alter database contentdb1 set single_user with rollback immediate之后, 運行alter database contentdb1 rebuild log on 的時候說數據庫在single user mode, 我的當前用戶無法執行命令.
我使用了命令exec sp_who2, 發現我的contentdb1上有個suspend的session, 執行命令kill XY 殺掉這個死掉的session之后, 問題解決.
?
參考資料
=====================
SQL – Get Exclusive Lock – Fix for The database could not be exclusively locked to perform the operation error
http://robbamforth.wordpress.com/2009/11/13/sql-get-exclusive-lock-fix-for-the-database-could-not-be-exclusively-locked-to-perform-the-operation-error/
Rebuilding Transaction Log in SQL Server 2000, 2005, 2008
http://database-wiki.com/2011/03/06/rebuilding-transaction-log-in-sql-server-2000-2005-2008/
CHecking SQL Acitivity
http://networking.ringofsaturn.com/SQL/sql-activity.php
How to recover database from MDF in SQL Server 2005?
http://stackoverflow.com/questions/773059/how-to-recover-database-from-mdf-in-sql-server-2005
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的LDF文件丢失, 如何仅用MDF文件恢复数据库呢?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的加密算法
- 下一篇: oracle 关于日期格式转换与使用