第一:建庫--查詢分析器
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,恢復到故障點前的數據狀態
雖然什麼都恢復了,但是還是想到了一個不足之處,每次在恢復時都得備份事務日誌有點耗時間,第二,假如事務日誌在上次備份時已經截斷了,那會不會發生問題?得繼續試驗