SQLServer之建立資料庫快照

2021-09-13 01:25:23 字數 2064 閱讀 8164

語法:set transaction isolation level snapshot;

指定事務中任何語句讀取的資料都將是在事務開始時便存在的資料的事務上一致的版本。 事務只能識別在其開始之前提交的資料修改。 在當前事務中執行的語句將看不到在當前事務開始以後由其他事務所做的資料修改。 其效果就好像事務中的語句獲得了已提交資料的快照,因為該資料在事務開始時就存在。

除非正在恢復資料庫,否則 snapshot 事務不會在讀取資料時請求鎖。 讀取資料的 snapshot 事務不會阻止其他事務寫入資料。 寫入資料的事務也不會阻止 snapshot 事務讀取資料。

在資料庫恢復的回滾階段,如果嘗試讀取由其他正在回滾的事務鎖定的資料,則 snapshot 事務將請求乙個鎖。 在事務完成回滾之前,snapshot 事務會一直被阻塞。 當事務取得授權之後,便會立即釋放鎖。

必須將 allow_snapshot_isolation 資料庫選項設定為 on,才能開始乙個使用 snapshot 隔離級別的事務。如果使用 snapshot 隔離級別的事務訪問多個資料庫中的資料,則必須在每個資料庫中將 allow_snapshot_isolation 都設定為 on。

不能將通過其他隔離級別開始的事務設定為 snapshot 隔離級別,否則將導致事務中止。 如果乙個事務在 snapshot 隔離級別開始,則可以將它更改為另乙個隔離級別,然後再返回 snapshot。 事務在第一次訪問資料時啟動。

在 snapshot 隔離級別下執行的事務可以檢視由該事務所做的更改。 例如,如果事務對錶執行 update,然後對同乙個表發出 select 語句,則修改後的資料將包含在結果集中。

在快照隔離模式下,事務中任何語句讀取的 filestream 資料都將是在事務開始(而非語句開始)時便存在的資料的事務性一致版本。

讀取會話指令碼:

--宣告資料庫使用

use testss;

go--開啟修改會話

begin transaction updatetran

update test1 set name='資料庫快照' where id='1';

waitfor delay '00:00:10';

commit transaction

go修改會話指令碼:

--宣告資料庫使用

use testss;

go--建立讀取會話

--宣告資料庫使用

use testss;

go--開啟資料庫快照隔離

--alter database testss set allow_snapshot_isolation on;

--關閉資料庫快照隔離

--alter database testss set allow_snapshot_isolation off;

--設定事務隔離級別

set transaction isolation level snapshot;

--建立讀取會話

begin transaction readtran

select * from test1 where id='1';

commit transaction;

go修改指令碼:依次顯示修改指令碼執行狀態和執行結果。

讀取指令碼:依次顯示讀取指令碼讀取狀態和讀取結果。

SQL Server建立資料庫

建立資料庫的基本語句 create database 資料庫名稱 create database studentdb onprimary 主資料檔案 name student data,資料檔案邏輯名稱 filename c db student data.mdf 資料檔案物理名稱 size 3mb...

建立SQL Server資料庫

建立sql server資料庫 1 以介面方式建立資料庫 下面在sql server management studio中建立資料庫 db database 具體操作步驟如下。1 啟動sql server management studio,並連線到sql server 2012中的資料庫。2 滑鼠...

SQL Server 建立資料庫

建立資料庫有兩種方式 方式1 圖形化介面建立 1.滑鼠右擊 資料庫 然後點選新建資料庫 2.設定常規選項卡 2.1 給資料庫命名,一般多個單詞要用下劃線連線,不建議用空格,如test db。2.2 所有者 預設即為當前伺服器的administrator,可以點選 把sa也加進來,很簡單不做截圖了。2...