2013-10-07 70 views
1

當我跑 - SET事務隔離級別快照 - 命令執行成功但下面的查詢返回:設置快照隔離不反映

SELECT is_read_committed_snapshot_on, 
     snapshot_isolation_state_desc, 
     snapshot_isolation_state 
FROM sys.databases 
WHERE name = 'MyDB' 

輸出:

is_read_committed_snapshot_on 0 
snapshot_isolation_state_desc OFF 
snapshot_isolation_state  0 

你能pleae讓我知道爲什麼設置轉換命令沒有反映? 另外,我假設ALLOW_SNAPSHOT_ISOLATION已經「打開」,因爲我的「SET TRANSACTION ISOLATION LEVEL SNAPSHOT」命令運行成功。是否正確?

回答

2

該數據庫沒有快照隔離。

如果您嘗試並針對該數據庫運行查詢,您將收到該消息。

快照隔離事務無法訪問數據庫'MyDB' ,因爲此數據庫中不允許快照隔離。使用ALTER DATABASE允許快照隔離。

要啓用它,你需要運行

ALTER DATABASE MyDB SET ALLOW_SNAPSHOT_ISOLATION ON; 
+0

感謝。我是沒有得到,當我跑事務隔離級別設置快照。它跑sucessfully.That就是爲什麼我很困惑任何這樣的消息。 – Krishna

+0

@Ikrishs - 這不是一個錯誤。 'SET TRANSACTION ISOLATION LEVEL SNAPSHOT; SELECT * FROM master..spt_monitor'可以正常工作,因爲事務不會觸及DB中禁用它的任何內容。 –

+0

Thanks.It僅在select語句後拋出以下錯誤:「快照隔離事務訪問數據庫'xyz'失敗,因爲此數據庫中不允許快照隔離,請使用ALTER DATABASE以允許快照隔離。因此設置Transcation Snapshot不會檢查Allow_Snapshot_On是否已經打開。 – Krishna