sqlserver 開啟快照

2021-10-06 12:50:50 字數 1363 閱讀 5935

同事總結的 記錄之

(1).開啟快照:

在master資料庫執行如下:

alter database [dbname] set allow_snapshot_isolation on;

alter database [dbname] set read_committed_snapshot on;

在nc資料庫下執行如下:

set transaction isolation level read committed

說明:以上三句指令碼可以確定開啟已提交讀隔離級別快照(即使人為修改為snapshot模式情況下)

(2).切換模式

--預設是read committed,所以以下不用修改;僅在被人為修改為snapshot時的情況下用

//切換成:已提交讀隔離快照(語句級)

set transaction isolation level read committed

//切換成:快照事務級別

set transaction isolation level snapshot

//檢視當前模式(是事務級快照還是已提交讀隔離級別快照)

dbcc useroptions --預設是read committed

(3).檢視是否開啟

//檢視當前是否開始快照(事務快照和已提交讀隔離快照)

select name,user_access,user_access_desc,snapshot_isolation_state,snapshot_isolation_state_desc,is_read_committed_snapshot_on from sys.databases

附:遇到問題及解決方案

(4).如果(1)開啟快照指令碼執行時有其它資料庫連線,可以嘗試如下:

1問題解決. 停止nc服務,多個應用都要停止。

2. 重啟sql server資料庫

3. 殺掉當前資料庫所有session

declare @kid varchar(8000)

set @kid=''

select @kid=@kid+' kill '+cast(spid as varchar(8))

from master..sysprocesses

where dbid=db_id('ncdb')

exec(@kid)

4. 快照指令碼(慎用,有時候不容易切換回單使用者,優先檢查前面幾個步驟沒問題)

i.alter database [dbname] set single_user with rollback immediate ;

ii. ---(1)中的三句開啟快照指令碼---

iii.alter database [dbname] set multi_user;

SQL Server 建立資料庫快照

建立資料庫快照 必須在create database 命令中包括源資料庫的每乙個資料檔案,原始邏輯名,新物理名與路徑,不能指定其他屬性 create database db snapshot name on as snapshot of db name 例子 create database stud...

Sql Server 2005中的快照隔離

sql server2005提供了兩種基於快照的隔離型別,他們都是利用行版本控制來維護快照的 1 已提交讀快照隔離 rcsi 通過修改資料庫的乙個選項來啟用 alter database adventureworks set read committed snapshot on 2 快照隔離 si ...

SQLServer之建立資料庫快照

語法 set transaction isolation level snapshot 指定事務中任何語句讀取的資料都將是在事務開始時便存在的資料的事務上一致的版本。事務只能識別在其開始之前提交的資料修改。在當前事務中執行的語句將看不到在當前事務開始以後由其他事務所做的資料修改。其效果就好像事務中的...