日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sqlserver数据库快照和mysql_解析SQLServer视图、数据库快照_MySQL

發(fā)布時間:2023/12/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver数据库快照和mysql_解析SQLServer视图、数据库快照_MySQL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介數(shù)據(jù)庫快照

數(shù)據(jù)庫快照,正如其名稱所示那樣,是數(shù)據(jù)庫在某一時間點的視圖。是SQL Server在2005之后的版本引入的特性??煺盏膽?yīng)用場景比較多,但快照設(shè)計最開始的目的是為了報表服務(wù)。比如我需要出2011的資產(chǎn)負債表,這需要數(shù)據(jù)保持在2011年12月31日零點時的狀態(tài),則利用快照可以實現(xiàn)這一點??煺者€可以和鏡像結(jié)合來達到讀寫分離的目的。下面我們來看什么是快照。

什么是快照

數(shù)據(jù)庫快照是 SQL Server 數(shù)據(jù)庫(源數(shù)據(jù)庫)的只讀靜態(tài)視圖。換句話說,快照可以理解為一個只讀的數(shù)據(jù)庫。利用快照,可以提供如下好處:

提供了一個靜態(tài)的視圖來為報表提供服務(wù)

可以利用數(shù)據(jù)庫快照來恢復數(shù)據(jù)庫,相比備份恢復來說,這個速度會大大提高(在下面我會解釋為什么)

和數(shù)據(jù)庫鏡像結(jié)合使用,提供讀寫分離

作為測試環(huán)境或數(shù)據(jù)變更前的備份,比如我要大批導入或刪除數(shù)據(jù)前,或是將數(shù)據(jù)提供給測試人員進行測試前,做一個快照,如果出現(xiàn)問題,則可以利用快照恢復到快照建立時的狀態(tài)

SQL Server 視圖

什么是視圖?

視圖是一個虛擬的表,內(nèi)容源于查詢的結(jié)果集。只有當視圖上建立了索引后,才會具體化。

視圖可以篩選和處理數(shù)據(jù),而不是直接訪問基礎(chǔ)表。如:創(chuàng)建一個視圖,只展示源表中的幾列數(shù)據(jù),無需授予用戶訪問基礎(chǔ)表的權(quán)限,取而代之的是授予視圖訪問權(quán)限。

為什么用視圖?

1、如果是比較復雜的多表聯(lián)查,可以將這些復雜的語句放在視圖中完成,而我們只需要使用簡單的語句查詢視圖即可。

2、保護基礎(chǔ)表,敏感列無法被檢索出。

3、對視圖添加索引,可以提高效率。

創(chuàng)建視圖

1、可以使用SSMS工具創(chuàng)建, 視圖->新建視圖->選表 選列 ->輸入名字保存即可。

2、使用T-SQL創(chuàng)建

if exists(select * from sysobjects where name = 'newView') --如果存在刪除

drop view newView

go

create view newView --創(chuàng)建視圖

as

select 學號=id,姓名=name,年齡=age from student

go

select * from newView

關(guān)于order by

if exists(select * from sysobjects where name = 'newView') --如果存在刪除

drop view newView

go

create view newView --創(chuàng)建視圖

as

select top 10 學號=id,姓名=name,年齡=age from student

order by id desc --如果使用order關(guān)鍵字 則必須指定top

go

select * from newView

修改視圖

alter view newView

as

select top 20 * from student

order by id desc --如果使用order關(guān)鍵字 則必須指定top

go

更新架構(gòu)

--剛剛修改的視圖用的是 * 查詢的是全部列

--此時修改基礎(chǔ)表架構(gòu)

alter table student add mail varchar(20)

--這時源表已經(jīng)更新架構(gòu),但是視圖并沒有改變 需要調(diào)用系統(tǒng)存儲過程更新一下

EXEC sp_refreshview studentView

--這時 新的列才會被加進來

更新視圖

對視圖進行增、刪、改操作,其實就是修改源表。但是由于諸多限制(如由多表聯(lián)查出的視圖,只檢索出個別字段,但是插入的時候有些源表上的值是非空的就會出問題),一般不修改視圖。

所以更新源表即可更新視圖。

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

數(shù)據(jù)庫快照是某一時間點的源數(shù)據(jù)庫的只讀靜態(tài)視圖,可以用來恢復數(shù)據(jù)庫。

使用數(shù)據(jù)庫快照必須與源數(shù)據(jù)庫在相同的服務(wù)器實例,并且不能對源數(shù)據(jù)庫進行刪除、分離、或還原操作。

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

--源表中數(shù)據(jù)

use webDB

go

select * from student

if exists(select * from sys.databases where name = 'webDB_DBSS')

drop database webDB_DBSS --存在則刪除

go

create database webDB_DBSS --創(chuàng)建數(shù)據(jù)庫快照

on

(

name = webDB,

filename='d:\webDB_DBSS.ss' --注意后綴.ss

) --如果有多個文件需要一一指出

as snapshot of webDB

go

--修改源數(shù)據(jù)庫數(shù)據(jù)

use webDB

go

update student set name='偉大' where id = 10

--查詢源數(shù)據(jù)庫數(shù)據(jù)

select * from student where id = 10

--查詢快照數(shù)據(jù)

use webDB_DBSS

go

select * from student where id = 10

修改源數(shù)據(jù)庫,快照數(shù)據(jù)庫并未發(fā)生改變。

--修改student表架構(gòu)

alter table webDB.dbo.student add [address] varchar(20)

select * from webDB.dbo.student

--快照中依然沒有

select * from webDB_DBSS.dbo.student

--刪除源數(shù)據(jù)庫student表

drop table webDB.dbo.newTable

--查詢數(shù)據(jù)庫快照該表 依然存在

select * from webDB_DBSS.dbo.newTable

從快照恢復數(shù)據(jù)到快照創(chuàng)建時刻

restore database webDB

from database_snapshot='webDB_DBSS'

go

select * from webDB.dbo.student --修改的值被改回

select * from webDb.dbo.newTable --被刪除的表 改回

以上得知:任何創(chuàng)建快照之后的修改數(shù)據(jù)都將被改回!

本條技術(shù)文章來源于互聯(lián)網(wǎng),如果無意侵犯您的權(quán)益請點擊此處反饋版權(quán)投訴

本文系統(tǒng)來源:php中文網(wǎng)

總結(jié)

以上是生活随笔為你收集整理的sqlserver数据库快照和mysql_解析SQLServer视图、数据库快照_MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。