關聯式資料庫為了確保資料一致性,使用:交易與鎖定等機制來處理。
若是為了:
- 防止交易讀到尚未認可的資料修改 (中途讀取)。
- 將鎖定爭用的情況降到最低。
在SQL Server 2005中提供了:
- 「讀取認可快照(READ_COMMITTED_SNAPSHOT)」
- 「快照集隔離(SNAPSHOT isolation)」
若要啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」,可以使用以下的方式:
- SSMS管理工具:指定資料庫的屬性
- T-SQL 陳述式:ALTER DATABASE...SET READ_COMMITTED_SNAPSHOT ON
-- 01_SSMS_啟用讀取認可快照
T-SQL 陳述式:ALTER DATABASE...SET READ_COMMITTED_SNAPSHOT ON
啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」
-- 01_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態
SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態',
snapshot_isolation_state_desc N'快照集隔離交易狀態的描述',
is_read_committed_snapshot_on N'啟用讀取認可快照'
FROM sys.databases
ORDER BY 4 DESC
GO
-- 02_啟用特定資料庫的「讀取認可快照」
USE master
GO
ALTER DATABASE DB01
SET READ_COMMITTED_SNAPSHOT ON
WITH ROLLBACK IMMEDIATE;
GO
-- 03_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態
SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態',
snapshot_isolation_state_desc N'快照集隔離交易狀態的描述',
is_read_committed_snapshot_on N'啟用讀取認可快照'
FROM sys.databases
ORDER BY 4 DESC
GO
-- 04_關閉:特定資料庫的「讀取認可快照」
USE master
GO
ALTER DATABASE DB01
SET READ_COMMITTED_SNAPSHOT OFF
WITH ROLLBACK IMMEDIATE;
GO
-- 05_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態
SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態',
snapshot_isolation_state_desc N'快照集隔離交易狀態的描述',
is_read_committed_snapshot_on N'啟用讀取認可快照'
FROM sys.databases
ORDER BY 4 DESC
GO
-- 21_TSQL_查詢_讀取認可快照
-- 22_啟用特定資料庫的「讀取認可快照」
-- 23_TSQL_查詢_讀取認可快照
參考資料
在「資料庫鏡像」上,啟用「讀取認可快照(Read Committed Snapshot)」。遭遇錯誤:訊息 1468,層級 16,狀態 4,因為它牽涉到資料庫鏡像工作階段(because it is involved in a database mirroring session)。
http://sharedderrick.blogspot.tw/2010/05/read-committed-snapshot-1468-16.html
Database Engine 中的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms189122.aspx
Database Engine 中資料列版本控制式的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms179599.aspx
啟用資料列版本控制式的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms175095.aspx
How to Enable RCSI for a Database with Database Mirroring
http://blogs.msdn.com/sqlcat/archive/2010/03/16/how-to-enable-rcsi-for-a-database-with-database-mirroring.aspx
SQL Server 中的快照集隔離
https://msdn.microsoft.com/zh-tw/library/tcbchxcb(v=vs.110).aspx
選擇以資料列版本控制為基礎的隔離等級
https://technet.microsoft.com/zh-tw/library/ms188277(v=sql.90).aspx





沒有留言:
張貼留言