SQL - 實作資料庫快照集 (Snapshot) 之 新增 查詢 更新 刪除

摘要:SQL - 實作資料庫快照集 (Snapshot) 之 新增 查詢 更新 刪除

在好久好久之前在上課時有上到過 Snapshot 資料庫快照,時光飛逝,我幾乎都快忘了它,今天就來重溫一下 資料庫快照集 (Snapshot) 之 新增、查詢、更新、刪除...

新增資料庫快照

--建立一個 Northwind 的資料庫快照集
USE [Northwind]
CREATE DATABASE Northwind_DB_20100120 ON
( NAME = Northwind, FILENAME =
'E:\Snapshot_Collection\Northwind_DB_20100120.ss' )
AS SNAPSHOT OF Northwind;
GO

--資料庫快照集的磁碟空間與實體檔案大小
USE [master]
SELECT DB_NAME(DBID) AS 'Snapshot 名稱', BytesOnDisk/1024.0 AS '實體檔案大小(KB)' 
FROM fn_virtualfilestats(DB_ID(N'Northwind_DB_20100120'), NULL); 
GO

--查詢 Northwind 檔案大小
USE [Northwind]
SELECT name N'資料庫名稱', physical_name N'檔案存放位址', size*8.0/1024 N'檔案大小(MB)' 
FROM sys.database_files
GO

--檢視現有的資料庫資訊
USE [Northwind]
Select name as N'資料庫名稱', database_id as N'資料庫ID', create_date as N'建立時間'
From sys.Databases


檢視資料庫快照

Select * From Northwind_DB_20100120.dbo.Orders

V.S.

Select * From dbo.Orders


將資料庫還原成資料庫快照集

--針對 Orders 資料表 的 OrderID = 10248 更新 CustomerID,將原先的 VINET 改為 TOMSP

Update Orders
Set CustomerID = 'TOMSP'
Where OrderID = 10248

USE [master]

RESTORE DATABASE Northwind from DATABASE_SNAPSHOT = 'Northwind_DB_20100120';
GO

--查詢還原結果

USE[Northwind]

Select * From Northwind_DB_20100120.dbo.Orders

Select * From dbo.Orders


刪除資料庫快照集

Drop Database Northwind_DB_20100120

參考:
如何:建立資料庫快照集 (Transact-SQL)
如何:檢視資料庫快照集 (SQL Server Management Studio)
如何:將資料庫還原成資料庫快照集 (Transact-SQL)
如何:卸除資料庫快照集 (Transact-SQL)
sys.tables (Transact-SQL)
資料庫快照集 (Database Snapshot) 壞了、損毀,對於原本資料庫的影響?
Usage of SQL Server Database Snapshots
fn_virtualfilestats (Transact-SQL)
DB_NAME (Transact-SQL)
DB_ID (Transact-SQL)
sys.database_files (Transact-SQL)