<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的這個數(shù)據(jù)恢復功能你用過嗎?

          共 2530字,需瀏覽 6分鐘

           ·

          2020-09-24 07:19

          點擊上方SQL數(shù)據(jù)庫開發(fā),關注獲取SQL視頻教程


          SQL專欄

          SQL基礎知識匯總

          SQL高級知識匯總


          今天我們要介紹的這個數(shù)據(jù)恢復功能叫快照。


          什么是快照

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

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

          客戶端可以查詢數(shù)據(jù)庫快照,這對于基于創(chuàng)建快照時的數(shù)據(jù)編寫報表是很有用的。而且,如果以后源數(shù)據(jù)庫損壞了,便可以將源數(shù)據(jù)庫恢復到它在創(chuàng)建快照時的狀態(tài)。?

          下面我們實踐一下數(shù)據(jù)庫快照的創(chuàng)建和使用。


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

          Use MASTER;
          GO
          CREATE DATABASE [Snapshot_Test] ON ?PRIMARY
          ( NAME = N'Snapshot_Test', --數(shù)據(jù)庫名稱
          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
          --增長容量
          )
          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

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

          在創(chuàng)建完數(shù)據(jù)庫之后,我們馬上創(chuàng)建一個快照,創(chuàng)建快照使用的也是CREATE DATABASE語句,如下:


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

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

          結果:

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

          use Snapshot_Test_shot;
          go
          SELECT * FROM dbo.test;

          結果:

          以上語句執(zhí)行后dbo.test中沒有任何數(shù)據(jù),下一步我們往源數(shù)據(jù)庫表中插入幾條數(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;

          結果:

          我們再次查詢快照數(shù)據(jù)庫中的數(shù)據(jù)

          use Snapshot_Test_shot;
          go
          SELECT * FROM dbo.test;

          結果:

          依舊沒有數(shù)據(jù),那是因為快照一旦創(chuàng)建就不能往里面寫數(shù)據(jù)了,是只讀文件。


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

          從數(shù)據(jù)庫快照恢復數(shù)據(jù)庫

          use master;
          GO
          RESTORE DATABASE Snapshot_Test from
          DATABASE_SNAPSHOT = 'Snapshot_Test_shot';

          恢復后,剛插入的數(shù)據(jù)就沒有了,我們可以查詢一下。

          use Snapshot_Test;
          SELECT * FROM dbo.test

          結果:

          由此可以證明,快照將數(shù)據(jù)庫恢復到創(chuàng)建快照的那一刻了。


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

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

          DROP?DATABASE?Snapshot_Test_shot

          結果:

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


          應用場景

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

          1)?維護歷史數(shù)據(jù)以生成報表。

          2)?使用為了實現(xiàn)可用性目標而維護的鏡像數(shù)據(jù)庫來卸載報表。

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

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


          ——End——

          后臺回復關鍵字:1024,獲取一份精心整理的技術干貨
          后臺回復關鍵字:進群,帶你進入高手如云的交流群。
          推薦閱讀
          這是一個能學到技術的公眾號,歡迎關注
          點擊「閱讀原文」了解SQL訓練營

          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲一多视频 | 成人在线大香蕉免费 | 成人免费黄片视频 | 日韩女同性爱一区二区三区四区五区 | 九一视频网站 |