<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • sql數據庫恢復數據(sql數據庫三種備份和恢復)


    什么是快照

    數據庫快照是sql server 2005的一個新功能。MSDN上對它的定義是:

    數據庫快照是數據庫(稱為“源數據庫”)的只讀靜態視圖。在創建時,每個數據庫快照在事務上都與源數據庫一致。在創建數據庫快照時,源數據庫通常會有打開的事務。在快照可以使用之前,打開的事務會回滾以使數據庫快照在事務上取得一致。

    創建示例數據庫

    Use MASTER;GOCREATE DATABASE [Snapshot_Test] ON PRIMARY( NAME = N'Snapshot_Test', --數據庫名稱FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATASnapshot_Test.mdf',--數據文件存放位置及數據文件名稱SIZE = 3072KB ,--初始容量MAXSIZE = UNLIMITED,--最大容量FILEGROWTH = 1024KB--增長容量)LOG ON( NAME = N'Snapshot_Test_log',FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATASnapshot_Test_log.ldf' ,SIZE = 504KB ,MAXSIZE = UNLIMITED,FILEGROWTH = 10%)COLLATE Chinese_PRC_CI_ASGOEXEC dbo.sp_dbcmptlevel @dbname=N'Snapshot_Test', @new_cmptlevel=130GOUSE [Snapshot_Test]GOSET ANSI_S ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[test]( [id] [int] NOT , [name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT ) ON [PRIMARY]GO

    (提示:可以左右滑動代碼)

    也可以直接在SSMS里通過圖形化界面創建測試數據庫,這里不作贅述。在創建完數據庫之后,我們又新建了一個test表,我們先往里面插入測試數據。如下:

    use snapshot_Test;goINSERT 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');GOSELECT * FROM dbo.test;

    結果:

    SQL中如何用快照,恢復被誤刪的數據?

    然后我們馬上創建一個快照,創建快照使用的也是CREATE DATABASE語句,如下:

    創建數據庫快照

    執行下面的創建快照的語句

    create database Snapshot_Test_shot ON(--是源數據庫的邏輯名Name = Snapshot_Test,--快照文件地址 FileName = 'D:SqlDataSnapshot_Test_shot.ss')AS SNAPSHOT OF Snapshot_Test;

    結果:

    SQL中如何用快照,恢復被誤刪的數據?

    現在的快照應該和我們新建的數據庫一摸一樣,可以通過sql server的對象瀏覽器查看數據庫快照,我們可以通過USE [快照庫名]來查詢數據庫快照

    use Snapshot_Test_shot;goSELECT * FROM dbo.test;

    結果:

    SQL中如何用快照,恢復被誤刪的數據?

    刪除測試庫數據

    刪除測試庫數據

    下面我們刪除測試數據庫中的數據

    use Snapshot_Test;goDELETE FROM dbo.test;

    結果:

    SQL中如何用快照,恢復被誤刪的數據?

    使用快照恢復數據庫

    上面刪除是我們模擬誤刪了數據庫中的數據,但是幸好我們做了數據庫的快照??梢酝ㄟ^快照來還原剛才被誤刪的數據。

    --語法RESTORE DATABASE DB_NAMEFROM DATABASE_SNAPSHOT = 'DB_SNAPSHOT_NAME'

    我們按照上面的語法進行恢復

    RESTORE DATABASE Snapshot_testFROM DATABASE_SNAPSHOT = 'Snapshot_test_shot'

    執行完上面的恢復語句后,我們再查詢一下測試庫中的表

    use Snapshot_Test;goSELECT * FROM test

    結果:

    數據又回來,證明可以通過創建快照來恢復被誤刪的數據。

    注意:

    1、快照是只讀的,一旦創建不能修改

    2、快照只能恢復數據庫,不能恢復指定的表

    3、為防止誤刪除,必須在數據插入或更新到數據庫之后再創建快照,否則在插入或更新之前創建快照,插入或更新的數據被刪除是無法恢復的。

    4、快照一般與定時任務一起使用,可以定時創建不同的快照防止數據丟失。

    刪除數據庫快照

    和刪除數據庫的語法一樣

    DROP DATABASE Snapshot_Test_shot

    結果:

    SQL中如何用快照,恢復被誤刪的數據?

    數據庫快照下面沒有任何快照了,說明已經被刪除。

    應用場景

    在MSDN中數據庫快照的典型應用是

    1) 維護歷史數據以生成報表。

    2) 使用為了實現可用性目標而維護的鏡像數據庫來卸載報表。

    3) 使數據免受管理失誤所帶來的影響。

    4) 使數據免受用戶失誤所帶來的影響。

    SQL中如何用快照,恢復被誤刪的數據?
    SQL中如何用快照,恢復被誤刪的數據?
    SQL中如何用快照,恢復被誤刪的數據?

    數據分析知識

    愛數據學習社

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费