共用方式為


鎖定與資料列版本控制

當多個使用者同時存取資料時,SQL Server Database Engine 會使用下列機制來確保交易完整性,並維護資料庫一致性:

  • 鎖定

    每一個交易會要求資源上不同類型的鎖定,例如交易相依的資料列、頁面或資料表。鎖定會阻擋其他交易修改資源,以免造成要求鎖定的交易發生問題。每一個交易對於鎖定的資源不再具有相依性時,就會釋放它的鎖定。

  • 資料列版本控制

    啟用以資料列版本控制為基礎的隔離等級之後,「Database Engine」會維護每一個修改過的資料列的版本。應用程式可指定交易使用資料列版本,來檢視交易或查詢開始時已存在的資料,而不是以鎖定來保護所有讀取。透過使用資料列版本控制,讀取作業封鎖其他交易的機會可大幅降低。

鎖定和資料列版本控制可防止使用者讀取尚未認可的資料,以及防止多個使用者同時變更同一筆資料。若未使用鎖定或資料列版本控制,則對資料執行查詢時,可能會傳回尚未在資料庫中認可的資料,因而產生非預期的結果。

應用程式可以選擇交易隔離等級,用於定義交易的保護層級,以免被其他交易修改。另可對個別 Transact-SQL 陳述式指定資料表層級提示,進一步修改行為,以符合應用程式的需求。

使用者可透過啟用或停用資料庫選項,來控制資料列版本控制的實作。如需詳細資訊,請參閱<啟用資料列版本控制式的隔離等級>與<使用資料列版本控制式的隔離等級>。