<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SQL中如何用快照,恢復(fù)被誤刪的數(shù)據(jù)?

          共 2723字,需瀏覽 6分鐘

           ·

          2021-04-24 01:58

          SQL專欄

          3000字!5大SQL數(shù)據(jù)清洗方法!


          什么是快照

          數(shù)據(jù)庫(kù)快照是sql server 2005的一個(gè)新功能。MSDN上對(duì)它的定義是:

          數(shù)據(jù)庫(kù)快照是數(shù)據(jù)庫(kù)(稱為“源數(shù)據(jù)庫(kù)”)的只讀靜態(tài)視圖。在創(chuàng)建時(shí),每個(gè)數(shù)據(jù)庫(kù)快照在事務(wù)上都與源數(shù)據(jù)庫(kù)一致。在創(chuàng)建數(shù)據(jù)庫(kù)快照時(shí),源數(shù)據(jù)庫(kù)通常會(huì)有打開的事務(wù)。在快照可以使用之前,打開的事務(wù)會(huì)回滾以使數(shù)據(jù)庫(kù)快照在事務(wù)上取得一致。 


          創(chuàng)建示例數(shù)據(jù)庫(kù)

          Use MASTER;
          GO
          CREATE DATABASE [Snapshot_Test] ON  PRIMARY
          ( NAME = N'Snapshot_Test', --數(shù)據(jù)庫(kù)名稱
          FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Snapshot_Test.mdf',
          --數(shù)據(jù)文件存放位置及數(shù)據(jù)文件名稱
          SIZE = 3072KB ,
          --初始容量
          MAXSIZE = UNLIMITED,
          --最大容量
          FILEGROWTH = 1024KB
          --增長(zhǎng)容量
          )
          LOG ON
          ( NAME = N'Snapshot_Test_log',
          FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\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=130
          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

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

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


          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
          SELECT * FROM dbo.test;

          結(jié)果:


          然后我們馬上創(chuàng)建一個(gè)快照,創(chuàng)建快照使用的也是CREATE DATABASE語(yǔ)句,如下:


          創(chuàng)建數(shù)據(jù)庫(kù)快照

          執(zhí)行下面的創(chuàng)建快照的語(yǔ)句

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

          結(jié)果:

          現(xiàn)在的快照應(yīng)該和我們新建的數(shù)據(jù)庫(kù)一摸一樣,可以通過sql server的對(duì)象瀏覽器查看數(shù)據(jù)庫(kù)快照,我們可以通過USE [快照庫(kù)名]來(lái)查詢數(shù)據(jù)庫(kù)快照

          use Snapshot_Test_shot;
          go
          SELECT * FROM dbo.test;

          結(jié)果:


          刪除測(cè)試庫(kù)數(shù)據(jù)

          下面我們刪除測(cè)試數(shù)據(jù)庫(kù)中的數(shù)據(jù)

          use Snapshot_Test;
          go
          DELETE FROM dbo.test;

          結(jié)果:


          使用快照恢復(fù)數(shù)據(jù)庫(kù)

          上面刪除是我們模擬誤刪了數(shù)據(jù)庫(kù)中的數(shù)據(jù),但是幸好我們做了數(shù)據(jù)庫(kù)的快照。可以通過快照來(lái)還原剛才被誤刪的數(shù)據(jù)。

          --語(yǔ)法
          RESTORE DATABASE DB_NAME
          FROM DATABASE_SNAPSHOT = 'DB_SNAPSHOT_NAME'


          我們按照上面的語(yǔ)法進(jìn)行恢復(fù)

          RESTORE DATABASE Snapshot_test
          FROM DATABASE_SNAPSHOT = 'Snapshot_test_shot'


          執(zhí)行完上面的恢復(fù)語(yǔ)句后,我們?cè)俨樵円幌聹y(cè)試庫(kù)中的表

          use Snapshot_Test;
          go
          SELECT * FROM test


          結(jié)果:

          數(shù)據(jù)又回來(lái),證明可以通過創(chuàng)建快照來(lái)恢復(fù)被誤刪的數(shù)據(jù)。


          注意

          1、快照是只讀的,一旦創(chuàng)建不能修改

          2、快照只能恢復(fù)數(shù)據(jù)庫(kù),不能恢復(fù)指定的表

          3、為防止誤刪除,必須在數(shù)據(jù)插入或更新到數(shù)據(jù)庫(kù)之后再創(chuàng)建快照,否則在插入或更新之前創(chuàng)建快照,插入或更新的數(shù)據(jù)被刪除是無(wú)法恢復(fù)的。

          4、快照一般與定時(shí)任務(wù)一起使用,可以定時(shí)創(chuàng)建不同的快照防止數(shù)據(jù)丟失。


          刪除數(shù)據(jù)庫(kù)快照

          和刪除數(shù)據(jù)庫(kù)的語(yǔ)法一樣

          DROP DATABASE Snapshot_Test_shot

          結(jié)果:

          數(shù)據(jù)庫(kù)快照下面沒有任何快照了,說(shuō)明已經(jīng)被刪除。


          應(yīng)用場(chǎng)景

          在MSDN中數(shù)據(jù)庫(kù)快照的典型應(yīng)用是

          1) 維護(hù)歷史數(shù)據(jù)以生成報(bào)表。

          2) 使用為了實(shí)現(xiàn)可用性目標(biāo)而維護(hù)的鏡像數(shù)據(jù)庫(kù)來(lái)卸載報(bào)表。

          3) 使數(shù)據(jù)免受管理失誤所帶來(lái)的影響。

          4) 使數(shù)據(jù)免受用戶失誤所帶來(lái)的影響。

          ·················END·················

          推薦閱讀

          1. 超細(xì)節(jié)!數(shù)據(jù)分析社招面試指南

          2. 寫給所有數(shù)據(jù)人。

          3. 從留存率業(yè)務(wù)案例談0-1的數(shù)據(jù)指標(biāo)體系

          4. 數(shù)據(jù)分析師的一周

          5. 超級(jí)菜鳥如何入門數(shù)據(jù)分析?


          歡迎長(zhǎng)按掃碼關(guān)注「數(shù)據(jù)管道」

          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉xxxx | 18禁日韩无码 | 激情综合网五月 | 91天天爽 | 久久久精品淫秽色情 |