有沒有辦法在SQL 2005-2008數據庫中鎖定一行而不啓動事務,所以其他進程無法更新該行直到它被解鎖?在SQL 2005-2008中鎖定行
7
A
回答
3
您可以使用RowLock or other hints但你應該careful ..
的HOLDLOCK提示將指示的SQL Server,直到您提交事務持有的鎖。 ROWLOCK提示將只鎖定這條記錄,不會發出頁面或表鎖。
如果關閉連接或超時,鎖定也將被釋放。我會非常小心的這樣做,因爲它會阻止任何碰到這行的SELECT語句在他們的軌道中死去。 SQL Server有許多可以使用的鎖定提示。當您在HOLDLOCK或ROWLOCK上進行搜索時,您可以在Books Online中看到它們。
1
在服務器中執行的所有操作都發生在事務中,無論是隱式還是顯式。
您不能簡單地鎖定沒有事務的行(使行只能讀取)。您可以使數據庫只讀,但不只是一行。
解釋你的目的,這可能是一個更好的解決方案。隔離級別和鎖定提示以及row versioning。
0
你需要鎖定行,還是應該Sql Server's Application locks你需要什麼?
應用程序鎖只是一個名字可以「鎖定」,「解鎖」並檢查它是否被鎖定的鎖。詳情請參閱上面的鏈接。 (他們得到解鎖,如果你的連接關閉等,所以往往會自己清理)
+0
我無法使用應用程序鎖定,因爲訪問「鎖定」行的其他應用程序不知道他們需要先檢查應用程序鎖定。 – alex 2009-09-22 19:49:46
相關問題
- 1. SQL Server行鎖定
- 2. 在表中鎖定一行SQL Server
- 3. 在SQL Server中鎖定
- 4. 在SQL Server中鎖定表
- 5. SQL並行刪除鎖定
- 6. 查找給定表的鎖定行以及鎖定在SQL Server中的用戶
- 7. 瞭解SQL Server中的鎖定行爲
- 8. 在SQL Server上讀取鎖定行?
- 9. 解釋在SQL Server的鎖定行爲
- 10. 從C#winform鎖定和解鎖sql數據庫中的行
- 11. SQL Server鎖定
- 12. 如何鎖定在SQL
- 13. 在SQL Server上鎖定
- 14. 將一個表鎖鎖定行鎖定
- 15. 在sql表中鎖定記錄
- 16. 在sql中鎖定存儲過程
- 17. SQL Server - 使用JDBC的行鎖定
- 18. 使用SQL Server鎖定的DataReader行爲
- 19. 使用INSERT INTO的Oracle SQL鎖定行
- 20. Sql光標鎖定
- 21. SQL鎖定默認
- 22. SQL Server鎖定表
- 23. SQL鎖定問題
- 24. 如何在SQL Server 2008中用鎖定表更新大量行?
- 25. 如何檢測一行是否被鎖定在sql server表中?
- 26. 在SQL Server 2008中使用NHibernate進行悲觀鎖定
- 27. 在SQL中使用雙重檢查鎖定的死鎖
- 28. 在SQL Server 2008中添加列鎖表鎖定?
- 29. 在extjs中鎖定網格中的行
- 30. 鎖定多行
我試過這個,但它不是我想要的。當我執行更新時,它確實擁有鎖定。更新一直等到鎖被釋放,然後更新記錄(這不是我想要的)。其次,我仍然可以在沒有任何問題的情況下執行選擇。 – Martijn 2010-09-22 08:26:21