MSSQLSERVER數據庫部份恢復的完全修復試驗

 第一:建庫--查詢分析器

create database xuzh
on
Primary
 (name=xuzhP01,filename='d:/sqldata/xuzhP01.MDF',size=10MB,filegrowth=10%),
 (name=xuzhP02,filename='d:/sqldata/xuzhP02.ndf',size=1MB,filegrowth=10%)
,
Filegroup Last
 (name=xuzhL01,filename='d:/sqldata/xuzhL01.NDF',size=10MB,filegrowth=10%),
 (name=xuzhL02,filename='d:/sqldata/xuzhL02.ndf',size=1MB,filegrowth=10%)
Log on
 (name=xuzhPL01,filename='d:/sqldata/xuzhPL01.ldf',size=10MB,filegrowth=10%),
 (name=xuzhPL02,filename='d:/sqldata/xuzhPL02.ldf',size=1MB,filegrowth=10%)
go
alter database xuzh set recovery full --必須得有,沒有這個估計得掛啊
go

第二建表:

use xuzh
go
create table users(
uid varchar(10),
uname varchar(10)
)
on last;
go

建完後可以錄入部份數據以測試,接下來是備份一個文件組

backup database xuzh
filegroup='last'
to disk='d:/file.bak'
with init

控制檯:net stop mssqlserver

刪除LAST組的兩個文件

net start mssqlserver

--查詢分析器中

restore database xuzh
filegroup='last'
from disk='d:/file.bak'
with norecovery

錯誤如下:
服務器: 消息 3159,級別 16,狀態 1,行 1
數據庫 'xuzh' 的日誌尾部尚未備份。請備份該日誌,然後重新運行 RESTORE 語句並在該語句中指定 FILE 子句。
服務器: 消息 3013,級別 16,狀態 1,行 1
RESTORE DATABASE 操作異常終止。

不要緊,接下來做這個事情:


backup log xuzh
to disk='d:/filelog.bak'
with init,no_truncate   --no_truncate使得數據庫在損壞的狀態下仍然能夠備份事務日誌

接下來執行上面的還原TSQL,

最後一步是:

restore log xuzh
from disk='d:/filelog.bak'
with recovery
一切OK,恢復到故障點前的數據狀態
雖然什麼都恢復了,但是還是想到了一個不足之處,每次在恢復時都得備份事務日誌有點耗時間,第二,假如事務日誌在上次備份時已經截斷了,那會不會發生問題?得繼續試驗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章