我正在使用readcommited隔離級別更新一個事務中的一行。從其他事務處理,我應該如何找到放置在同一行上的鎖而不嘗試更新該行。 有什麼想法?如何在不更新記錄的情況下知道某一行的鎖定狀態
回答
要獲取有關鎖定的信息,您可以執行sp_lock
程序。
注意:VIEW SERVER STATE
權限是必需的。
在SQL Server 2008中,您可以使用sys.dm_tran_locks動態管理視圖。
檢查鎖定的唯一方法是獲取鎖定你的自我。這不是特定於數據庫的,是併發性的一般問題。檢查鎖是否被鎖定的任何形式的API都會從根本上被破壞,因爲根據定義,根據此API檢查的結果執行的任何操作都是錯誤的,因爲基礎不舊,過時的信息。知道該鎖沒有舉行時,API檢查它並不意味着不被API返回時。
如果您在詢問有關鎖,您不可能寫出正確的程序。編寫正確程序的唯一方法是獲取鎖。與其他編程語言一樣,SQL也是如此。
沒有什麼能阻止您嘗試獲取即時超時的鎖(SET LOCK_TIMEOUT 0
)並處理衝突時發生的鎖超時錯誤。
感謝您的設計資訊。你能否請詳細說明或解釋一些關於獲取鎖的方法。 – 2012-07-13 06:31:41
使用[鎖定提示](http://msdn.microsoft.com/en-us/library/ms187373.aspx)。解釋你的情況,也許我們可以提供更多的細節如何去做。 – 2012-07-13 06:49:00
作爲一條評論:使用DMV查詢行鎖定基本上是不可能的,因爲您必須確切知道鎖定協議和數據庫的物理結構。例如:通過查看密鑰鎖資源來檢查密鑰'foo'的行是否被鎖定或者沒有(並且祝你好運*編譯*)是不夠的。一個concurent事務可能已經使用了頁面粒度,並且只鎖定了包含該行的* page *。你贏不了這個。 – 2012-07-13 06:53:24
我認爲你可以找到關於表級鎖不上的行級
試試下面的代碼,它會給這是目前鎖定表。
SELECT t.name as [Table Name]
FROM sys.dm_tran_locks as t1
Join sys.objects o1 on o1.object_id = t1.resource_associated_entity_id
Join sys.tables t on o1.object_id = t.object_id
感謝您的幫助。似乎無法獲得行級鎖。參考http://forums.devart.com/viewtopic.php?t=14418 – 2012-07-13 06:29:43
- 1. Berkeley DB:在不讀取記錄的情況下鎖定記錄
- 2. 如何在不更改rowversion的情況下更新記錄
- 3. 在不換行的情況下獲取持續狀態更新
- 4. 如何知道在特定情況下
- 5. 如何在不加載orm的情況下更新記錄?
- 6. 如何在不使用bitset的情況下知道C++中的位狀態?
- 7. 在不鎖定表格的情況下插入大量記錄
- 8. 如何在不知道位置的情況下打開目錄
- 9. 如何在不使用UDF的情況下更新特定Aerospike記錄的TTL?
- 10. 在不知道行號的情況下刪除特定行
- 11. 行鎖的更新狀態
- 12. Rails如何在不鎖定的情況下觸摸活動記錄對象?
- 13. Firebase Unity如何在不記住密碼的情況下堅持登錄狀態?
- 14. Mysql如何在不鎖定的情況下執行此操作
- 15. 如何在不執行檢出的情況下鎖定文件
- 16. 如何在不鎖定的情況下對文件進行href?
- 17. 如何在不知道父母的情況下更新Firebase小孩?
- 18. 如何在不使用mapDispatchToProps()方法的情況下更新redux中的狀態
- 19. 如何在不知道任何列值的情況下更新mysql(phpmyadmin)中的特定行
- 20. GWT:多選型號在某些情況下不更新單元格狀態
- 21. 如何在這種情況下更新記錄?
- 22. 如何在不刪除舊的php和mysql的情況下更新記錄?
- 23. 如何在不使用ShareActivity的情況下直接更新Google+狀態?
- 24. Redux Reducer - 如何在不改變狀態的情況下更新對象值?
- 25. 在不知道當前視圖狀態的情況下實現openURL
- 26. 默認情況下在休眠狀態下進行樂觀鎖定
- 27. Spring Security如何在不登錄的情況下更新userDetails
- 28. 在不知道行名的情況下刪除多行
- 29. 在不刷新其主視圖的情況下刷新狀態
- 30. 在不知道目錄C的情況下刪除一個子目錄#
的可能重複[如何檢查被保持在一個表,鎖(http://stackoverflow.com/questions/694581/how-to-check-which-locks-are-held-on- a-table) – 2012-07-13 04:55:22
此線程http://forums.devart.com/viewtopic.php?t=14418顯示,查詢行級鎖將非常繁瑣 – 2012-07-13 06:33:17