2008-09-21 31 views

回答

3

您可以使用RowLock or other hints但你應該careful ..

的HOLDLOCK提示將指示的SQL Server,直到您提交事務持有的鎖。 ROWLOCK提示將只鎖定這條記錄,不會發出頁面或表鎖。

如果關閉連接或超時,鎖定也將被釋放。我會非常小心的這樣做,因爲它會阻止任何碰到這行的SELECT語句在他們的軌道中死去。 SQL Server有許多可以使用的鎖定提示。當您在HOLDLOCK或ROWLOCK上進行搜索時,您可以在Books Online中看到它們。

+0

我試過這個,但它不是我想要的。當我執行更新時,它確實擁有鎖定。更新一直等到鎖被釋放,然後更新記錄(這不是我想要的)。其次,我仍然可以在沒有任何問題的情況下執行選擇。 – Martijn 2010-09-22 08:26:21

1

在服務器中執行的所有操作都發生在事務中,無論是隱式還是顯式。

您不能簡單地鎖定沒有事務的行(使行只能讀取)。您可以使數據庫只讀,但不只是一行。

解釋你的目的,這可能是一個更好的解決方案。隔離級別和鎖定提示以及row versioning

0

你需要鎖定,還是應該Sql Server's Application locks你需要什麼?

應用程序鎖只是一個名字可以「鎖定」,「解鎖」並檢查它是否被鎖定的鎖。詳情請參閱上面的鏈接。 (他們得到解鎖,如果你的連接關閉等,所以往往會自己清理)

+0

我無法使用應用程序鎖定,因爲訪問「鎖定」行的其他應用程序不知道他們需要先檢查應用程序鎖定。 – alex 2009-09-22 19:49:46