[SQL]RESTORE From SNAPSHOT

本文章介紹如何從Database SNAPSHOT來RESTORE Database

以下練習從SNAPSHOT來RESTORE,


USE master
go

--建立測試的DB
CREATE DATABASE MyDB ON 
(NAME = MyDB1, FILENAME = N'c:\Mydb1.mdf'),
(NAME = MyDB2, FILENAME = N'c:\Mydb2.ndf')
go

USE MyDB
go

--建立測試Table T1
CREATE TABLE T1 ( c1 INT );
go

--新增資料
DECLARE @i INT;
SET @i = 0;
WHILE @i < 1000
    BEGIN
        INSERT  INTO T1
        VALUES  ( @i )
        SET @i = @i + 1;
    END;
SELECT  COUNT(*)
FROM    T1;


--DROP DATABASE  MyDB_SS

--建立MyDB的SNAPSHOT
CREATE DATABASE MyDB_SS ON
(NAME = MyDB1, FILENAME=N'c:\Mydb1xx.ss'),
(NAME = MyDB2, FILENAME = N'c:\Mydb2xx.ss') 
AS SNAPSHOT OF MyDB;

--各有1000筆資料
SELECT  COUNT(*)
FROM    MyDB..T1;
SELECT  COUNT(*)
FROM    MyDB_SS..T1;

--把MyDB的T1給刪掉
TRUNCATE TABLE T1;

--將資料從SNAPSHOT Restore回來
USE master
go

RESTORE DATABASE MyDB 
FROM DATABASE_SNAPSHOT = 'MyDB_SS';
 
--資料回來了,各有1000筆資料
SELECT  COUNT(*)
FROM    MyDB..T1;
SELECT  COUNT(*)
FROM    MyDB_SS..T1;

--練習結束,刪除資料庫
DROP DATABASE MyDB_SS;
DROP DATABASE MyDB;

 

參考資料

使用快照集 (Snapshot) 備份資料庫內容

資料庫快照集 (Database Snapshot) 壞了、損毀,對於原本資料庫的影響?

RESTORE (Transact-SQL)

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^