天天看點

SQL Server : 資料庫快照及其查詢

近日再次講到SQL Server 2005中的資料庫快照功能。這裡做一個總結

使用場景:

  • 隻讀的報表查詢(可以有多個版本)
  • 分擔源資料庫壓力
  • 将資料靜止在某個時間
  • 對于人為失誤問題的災難恢複

主要限制:

  • 要求企業版
  • 資料庫快照與源資料庫必須在一個伺服器執行個體
  • 如果存在多個快照的話,就不可以使用其中某一個進行還原了

實驗步驟:

1. 建立資料庫快照

-- =============================================

-- Create Snapshot Template

USE master

GO

-- Drop snapshot database if it already exists

IF  EXISTS (

    SELECT name

        FROM sys.databases

        WHERE name = N'Northwind_20090725'

)

DROP DATABASE Northwind_NorthwindTest

-- Create the snapshot database

CREATE DATABASE Northwind_20090725 ON

( NAME = Northwind, FILENAME =

'E:\Temp\Northwind_20090725.ss' )

AS SNAPSHOT OF Northwind;

2. 查詢資料庫快照

SELECT * FROM Northwind_20090725..Customers

​​

SQL Server : 資料庫快照及其查詢

​​

3. 了解資料庫快照查詢的依賴關系

我們都知道資料庫快照這個功能最主要的一個特性就是所謂的"寫入時複制",也就是說快照資料庫最開始的時候并沒有包含資料, 隻有在源資料庫的資料頁發生變化的情況下,才會發生資料複制.

但是不管資料有沒有從源資料庫複制到快照資料庫,查詢快照資料庫都要求源資料庫是線上的

為了做這個測試,此時,如果設定源資料庫的狀态為脫機,則就無法完成查詢

ALTER DATABASE [Northwind] SET  OFFLINE