none
快照問題請教 RRS feed

  • 問題

  • 您好:請問
    Q1.快照可救 delete update 陳述式 , 所意外刪除或變更的資料列
    但我於原始TB使用update,但結果 快照似乎沒有更新update 的資料?
    --建立測試資料庫<br/>
    
    CREATE
     DATABASE
     SalesDB ON
      <br/>
    PRIMARY
     ( NAME
     = N'SalesDB_Data'
    , FILENAME = N'C:\gp\SalesDB.mdf'
     )<br/>
    LOG
     ON
     ( NAME
     = N'SalesDB_log'
    , FILENAME = N'C:\gp\SalesDB_log.LDF'
     )<br/>
    GO<br/>
    <br/>
    --從範例資料庫中建立資料表<br/>
    
    CREATE
     TABLE
     SalesDB.dbo.t1(c1 int
    ,c2 varchar
    (30))<br/>
    INSERT
     INTO
     SalesDB.dbo.t1 VALUES
    (1, 'ADA'
    )<br/>
    INSERT
     INTO
     SalesDB.dbo.t1 VALUES
    (2, 'LEWIS'
    )<br/>
    INSERT
     INTO
     SalesDB.dbo.t1 VALUES
    (3, 'JULIA'
    )<br/>
    <br/>
    --建立快照集<br/>
    
    CREATE
     DATABASE
     SalesDB_dbsnap_1400<br/>
    ON
     (NAME
     = SalesDB_Data,<br/>
        FILENAME = 'C:\gp\SalesDB_Data.mdf'
    )<br/>
    AS
     SNAPSHOT OF
     SalesDB<br/>
    <br/>
    DELETE
     FROM
     SalesDB.dbo.t1<br/>
    <br/>
    --檢查資料筆數<br/>
    
    SELECT
     COUNT
    (*) 'Count'
    ,'原始資料庫'
     <br/>
    FROM
     SalesDB.dbo.t1<br/>
    UNION
     ALL
    <br/>
    SELECT
     COUNT
    (*) ,'快照資料庫'
    <br/>
    FROM
     SalesDB_dbsnap_1400.dbo.t1<br/>
    <br/>
    ==> 0 筆  /3筆<br/>
    <br/>
    INSERT
     INTO
     SalesDB.dbo.t1<br/>
    SELECT
     * FROM
     SalesDB_dbsnap_1400.dbo.t1<br/>
    --重新查詢原始資料庫<br/>
    
    SELECT
     * FROM
     SalesDB.dbo.t1<br/>
    <br/>
    <br/>
    SELECT
     COUNT
    (*) 'Count'
    ,'原始資料庫'
     <br/>
    FROM
     SalesDB.dbo.t1<br/>
    UNION
     ALL
    <br/>
    SELECT
     COUNT
    (*) ,'快照資料庫'
    <br/>
    FROM
     SalesDB_dbsnap_1400.dbo.t1<br/>
    ==>3筆  /3筆<br/>
    <br/>
    <br/>
    --新增一筆資料<br/>
    
    INSERT
     INTO
     SalesDB.dbo.t1 VALUES
    (4, 'XXX'
    )<br/>
    --檢查資料筆數<br/>
    
    SELECT
     COUNT
    (*) 'Count'
    ,'原始資料庫'
     <br/>
    FROM
     SalesDB.dbo.t1<br/>
    UNION
     ALL
    <br/>
    SELECT
     COUNT
    (*) ,'快照資料庫'
    <br/>
    FROM
     SalesDB_dbsnap_1400.dbo.t1<br/>
     <br/>
    <br/>
    --修改一筆原始資料<br/>
    
    update
     SalesDB.dbo.t1 set
     c2='YYY'
     where
     c1=4<br/>
    update
     SalesDB.dbo.t1 set
     c2='ADA2'
     where
     c1=1<br/>
    <br/>
    select
     * from
     SalesDB.dbo.t1<br/>
    select
     * from
     SalesDB_dbsnap_1400.dbo.t1<br/>
    <br/>
    
    
    結果 快照並沒有更新update的資料?
    請問 UPDATE 也會有作用嗎?

    Q2.快照的資料可以刪除嗎?
    若原始有3筆,我刪除其中2筆,則此2筆會寫到 快照
    但若這2筆是以真的不要,那 因為一直停在快照裡面,所以已後 寫回原始TABLE的時候,應該也會備寫回?
    所以想問,快照資料可以刪除嗎?

    Q3.
    若是該資料庫含有多個快照集時 , 就會發生還原失敗的狀況?
    請問他的意思為何?

    謝謝!
    • 已編輯 softballnow 2010年2月14日 上午 07:33 錯誤
    2010年2月14日 上午 07:31

解答

  • 1. snapshot has original data before changing. If you delete row in underlying db by mistake, you can get that row in snapshot.
    2. snapshot is read only copy of db.
    3. you can recover db with any existing snapshot.  
    2010年2月14日 下午 10:02

所有回覆

  • 1. snapshot has original data before changing. If you delete row in underlying db by mistake, you can get that row in snapshot.
    2. snapshot is read only copy of db.
    3. you can recover db with any existing snapshot.  
    2010年2月14日 下午 10:02
  • hi
    關於資料庫快照可以參考小弟這兩篇
    資料庫快照#簡介
    資料庫快照#測試

    資料庫快照技術你可以想像成只是一個還原點會來的比較直覺點,而且快照中的資料是無法刪除的。







    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2010年2月19日 上午 01:15
    版主