SQL Server事務日志主要是用來記錄所有事務對數據庫所做的修改如果系統出現故障它將成為最新數據的唯一來源日志的操作常有以下幾個應用
一事務日志文件LDF的丟失
當我們不小刪除或者LDF文件丟失的時候數據庫只剩下MDF文件此時直接通過附加MDF是無法恢復數據庫的那我們怎麼樣才能恢復數據庫呢?我們可以把SQL Server的日志文件分為兩種形式一類是無活動事務的日志另一類是有活動事務的日志我們分別根據兩種情況來進行數據庫恢復
無活動事務的日志恢復
當文件並沒有發生活動性的日志我們就可以很容易的利用MDF文件就可以直接恢復數據庫了具體操作方法如下
()數據庫要是沒有日志就會處於置疑的狀態我們先可以通過企業管理器中在對應數據庫中點擊右鍵然後在所有任務下選擇分離數據庫把數據庫進行分離
()利用MDF文件附加數據庫生成新的日志文件可用企業管理器中數據庫點擊右鍵選擇所有任務下的附加數據庫把數據庫附加上
這樣就可以直接恢復好數據庫了而如果數據庫的日志文件中含有活動事務利用此方法就不能恢復數據庫所以得使用下面的方法
有活動事務的日志恢復
當日志發生了事務的記錄丟失的時候我們采用如下的方法來實現
()新建一個同名的數據庫如原數據庫名為MYDB然後停止SQL Server服務器再把數據庫主數據MDF文件移走然後重新啟動SQL Server服務器新建一個同名的數據庫MYDB然後再停止SQL Server服務器把移走的MDF文件再覆蓋回來然後再重新啟動SQL Server服務器在默認的情況下系統表是不允許被修改的我們需要運行以下語句才可以在查詢分析器中選擇Master數據庫然後執行
Sp_configure allow updates
Reconfigure With Override
接著運行以下語句把Sysdatabases表中MYDB數據庫的status屬性設為把MYDB數據庫設置為緊急模式
update sysdatabases set status= where name=MYDB
然後再把數據庫MYDB設置為單用戶模式然後重啟SQL Server服務器並把數據庫MYDB設為單用戶模式:
Sp_dboption MYDBsingle user true
再運行以下語句檢查數據庫MYDB:
DBCC CHECKDB(MYDB)
()還原數據庫的狀態
運行以下語句就可以把數據庫的狀態還原
Update Sysdatabases Set status= Where name=MYDB
Sp_Configure allow updates
Reconfigure With Override
此時的數據庫仍不能工作還要進行以下的操作才能恢復
()利用DTS的導入導出向導把數據庫MYDB導入到一個新建數據庫MYDBNEW中然後新建一個數據庫MYDBNEW右擊MYDBNEW選擇所有任務下的導出數據功能打開導入向導把表結構數據視圖和存儲過程導入到MYDBNEW中然後再用此功能把MYDBNEW庫替換成原來的MYDB庫即可可以知道恢復一個有活動事務的日志是麻煩多了所以在數據庫維護的時候切不要小看事務日志
[] []
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22418.html