Ms Sql Server 2005的数据库快照功能使用实践
數據庫快照是sql server 2005的一個新功能。Msdn上對它的定義是:
數據庫快照是數據庫(稱為“源數據庫”)的只讀靜態視圖。在創建時,每個數據庫快照在事務上都與源數據庫一致。在創建數據庫快照時,源數據庫通常會有打開的事務。在快照可以使用之前,打開的事務會回滾以使數據庫快照在事務上取得一致。?
客戶端可以查詢數據庫快照,這對于基于創建快照時的數據編寫報表是很有用的。而且,如果以后源數據庫損壞了,便可以將源數據庫恢復到它在創建快照時的狀態。?
下面我們實踐一下數據庫快照的創建和使用:
一.????????????? 我們創建一個數據庫在此數據庫的基礎上創建快照
創建源數據庫和數據表
Use?MASTER;
GO
CREATE?DATABASE?[Snapshot_Test]?ON??PRIMARY?
(?NAME?=?N'Snapshot_Test',?FILENAME?=?N'C:\Program?Files\Microsoft?SQL?Server\MSSQL.1\MSSQL\DATA\Snapshot_Test.mdf'?,?SIZE?=?3072KB?,?MAXSIZE?=?UNLIMITED,?FILEGROWTH?=?1024KB?)
?LOG?ON?
(?NAME?=?N'Snapshot_Test_log',?FILENAME?=?N'C:\Program?Files\Microsoft?SQL?Server\MSSQL.1\MSSQL\DATA\Snapshot_Test_log.ldf'?,?SIZE?=?504KB?,?MAXSIZE?=?UNLIMITED,?FILEGROWTH?=?10%)
?COLLATE?Chinese_PRC_CI_AS
GO
EXEC?dbo.sp_dbcmptlevel?@dbname=N'Snapshot_Test',?@new_cmptlevel=90
GO
USE?[Snapshot_Test]
GO
SET?ANSI_NULLS?ON
GO
SET?QUOTED_IDENTIFIER?ON
GO
CREATE?TABLE?[dbo].[test](
????[id]?[int]?NOT?NULL,
????[name]?[nvarchar](50)?COLLATE?Chinese_PRC_CI_AS?NOT?NULL
)?ON?[PRIMARY]
GO
在創建完數據庫之后,我們馬上創建一個快照,創建快照使用的也是CREATE DATABASE語句,如下:
創建數據庫快照--創建數據庫快照
create?database?Snapshot_Test_shot?ON
(
????--是源數據庫的邏輯名
????Name?=?Snapshot_Test,
????--快照文件地址
????FileName?=?'D:\SqlData\Snapshot_Test_shot.ss'
)?
AS?SNAPSHOT?OF?Snapshot_Test;
?
現在的快照應該和我們新建的數據庫一摸一樣,可以通過sql server 2005的對象瀏覽器查看數據庫快照,我們可以通過USE [快照庫名]來查詢數據庫快照
Codeuse?Snapshot_Test_shot;
go
SELECT?*?FROM?dbo.test;
以上語句執行后dbo.test中沒有任何數據,下一步我們往源數據庫表中插入幾條數據
use?snapshot_Test;
go
INSERT?INTO?TEST?(id,name)values(1,'hello?1');
INSERT?INTO?TEST?(id,name)values(2,'hello?2');
INSERT?INTO?TEST?(id,name)values(3,'hello?3');
INSERT?INTO?TEST?(id,name)values(4,'hello?4');
GO
我們再次查詢快照數據庫中的數據
GO
use?Snapshot_Test_shot;
go
SELECT?*?FROM?dbo.test;
二.????????????? 使用快照恢復數據庫
使用快照恢復數據庫Go
--從數據庫快照恢復數據庫
use?master;
GO
RESTORE?DATABASE?Snapshot_Test?from?
DATABASE_SNAPSHOT?=?'Snapshot_Test_shot';
三.????????????? 刪除數據庫快照
刪除快照--和刪除數據庫的語法一樣
DROP?DATABASE?Snapshot_Test_shot
在MSDN中數據庫快照的典型應用是
1)?維護歷史數據以生成報表。
2)?使用為了實現可用性目標而維護的鏡像數據庫來卸載報表。
3)?使數據免受管理失誤所帶來的影響。
4)?使數據免受用戶失誤所帶來的影響。
?
迄今為止,在我接觸的項目中還沒有快照的使用場景,本文只是一次簡單的對新技術的一次動手實踐,大家在實際項目中用過快照嗎,請談談您的看法。
完整腳本文件 下載
總結
以上是生活随笔為你收集整理的Ms Sql Server 2005的数据库快照功能使用实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深夜,在这个已不再喧嚣的城市中寻找到一片
- 下一篇: linux cmake编译源码,linu