2010-05-14 179 views

回答

5

沒有,但你可以使用SQL Server 2005上的SNAPSHOT ISOLATION數據庫級及以上,應該有很大的幫助死鎖

SQL Server 2005引入擴展到SQL-92隔離級別與引進的快照隔離級別和READ COMMITTED的附加實現。新的READ_COMMITTED_SNAPSHOT隔離級別可以透明地替換所有事務的READ COMMITTED。

SNAPSHOT隔離指定在事務內讀取的數據永遠不會反映其他同時事務所做的更改。事務使用交易開始時存在的數據行版本。數據讀取時不會鎖定數據,因此SNAPSHOT事務不會阻止其他事務寫入數據。寫入數據的事務不會阻止快照事務讀取數據。您需要通過設置ALLOW_SNAPSHOT_ISOLATION數據庫選項來啓用快照隔離才能使用它。

READ_COMMITTED_SNAPSHOT數據庫選項確定在數據庫中啓用快照隔離時,默認READ COMMITTED隔離級別的行爲。如果您沒有明確指定READ_COMMITTED_SNAPSHOT ON,則將READ COMMITTED應用於所有隱式事務。這產生與設置READ_COMMITTED_SNAPSHOT OFF(默認值)相同的行爲。當READ_COMMITTED_SNAPSHOT OFF有效時,數據庫引擎使用共享鎖來強制執行默認隔離級別。如果將READ_COMMITTED_SNAPSHOT數據庫選項設置爲ON,則數據庫引擎將使用行版本控制和快照隔離作爲默認值,而不是使用鎖來保護數據。

0

取決於您的數據庫。某些數據庫引擎允許您默認爲髒讀或類似行爲。

例如,某些MSSQL Server版本允許您將數據庫設置爲快照隔離,SQLMenace的文章中對此進行了描述。

+0

快照隔離不是髒讀,快照隔離是對數據的讀取,就像您開始批處理時一樣。骯髒的閱讀是讀取從未提交但可能已被回滾的數據(nolock,未定義的) – SQLMenace 2010-05-14 17:22:31

+0

感謝您指出這一點,希望我的回答現在沒有那麼具有誤導性。雖然,提問者仍然沒有指定他的數據庫,並且可能不會。 – marr75 2010-05-18 15:17:40

相關問題