共用方式為


鎖定提示 (SQL Server Compact Edition)

您可使用 SELECT、INSERT、UPDATE 及 DELETE 陳述式,指定資料表層級鎖定提示的範圍,以修改 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 的預設鎖定行為。只有在絕對必要時才使用鎖定提示,因為它們可能對並行造成不利影響。

重要事項:
SQL Server Compact Edition 會自動取得作業所需的鎖定。如果您使用下表中所列的鎖定提示,SQL Server Compact Edition 會增加發生的鎖定量。您無法使用鎖定提示來避免鎖定資源。

下表說明您可在 SQL Server Compact Edition 中使用的鎖定提示。

鎖定提示名稱 提示描述

資料粒度

ROWLOCK

讀取或修改資料時使用資料列層級鎖定。這些鎖定會依適當情況被取得及釋放。

SELECT 作業會在資料列上取得 S 鎖定。

PAGLOCK

讀取或修改資料時使用頁面層級鎖定。這些鎖定會依適當情況被取得及釋放。

SELECT 作業會在頁面上取得 S 鎖定。

TABLOCK

讀取或修改資料時使用資料表鎖定。此鎖定會被保留到陳述式結束為止。

SELECT 作業會在資料表上取得 S 鎖定。

DBLOCK

讀取或修改資料時使用資料庫鎖定。此鎖定會被保留到陳述式結束為止。

SELECT 作業會在資料庫上取得 S 鎖定。

LOCKMODES

UPDLOCK

在讀取資料表時使用更新鎖定,而非共用鎖定,並使用保留鎖定直到陳述式或交易結束為止。UPDLOCK 可讓您不會在讀取資料時封鎖其他讀取器,且稍後更新資料時,也可確信自從您上次讀取之後,資料並未發生變更。

SELECT 作業會取得 U 鎖定。預設細微性是 ROWLOCK。

XLOCK

在讀取資料表時使用獨佔鎖定,而非共用鎖定,並使用保留鎖定直到陳述式或交易結束為止。

SELECT 作業會取得 X 鎖定。預設細微性是 ROWLOCK。

持續期間

HOLDLOCK

使用保留鎖定將鎖定保留至交易完成為止,而不會在所需資料表、資料列或資料頁已不再需要時立即釋放鎖定。

如果未指定細微性,將會套用 ROWLOCK。

NOLOCK

不會發出任何鎖定。這是 SELECT 作業的預設值。此鎖定不適用於 INSERT、UPDATE 及 DELETE 陳述式。

附註:
在 SQL Server 中,使用 NOLOCK 提示會啟用「讀取未認可 (Read Uncommitted)」行為。在 SQL Server Compact Edition 中,使用 NOLOCK 提示仍然會提供「讀取認可 (Read Committed)」隔離等級。SQL Server Compact Edition 會維持多份資料複本以確保能夠讀取資料,而不需要使用共用鎖定來協助保護資料。

如需使用鎖定提示的詳細資訊,請參閱《SQL Server 線上叢書》的<鎖定提示>。

NOLOCK 提示

在 SQL Server Compact Edition 中使用鎖定提示與在 SQL Server 中使用鎖定提示類似。不過,NOLOCK 提示在 SQL Server Compact Edition 中的行為與在 SQL Server 中的行為有很大的差異。在 SQL Server Compact Edition 中,NOLOCK 提示是 SELECT 陳述式的預設值,但是這仍然會強制「讀取認可」行為。

在 SQL Server 中,具有預設「讀取認可」隔離等級的 SELECT 陳述式,會導致讀取資料列時在這些資料列上取得並釋放 S 鎖定。雖然這會強制隔離等級,不過也表示如果不相容的鎖定存在於需要 S 鎖定的資料列上,SELECT 陳述式將會等待。當指定 NOLOCK 提示時,SELECT 作業不會先嘗試取得 S 鎖定即讀取資料。雖然這可讓作業成功進行,不過也表示 SELECT 陳述式可能讀取未認可的資料。

SQL Server Compact Edition 不會使用 S 鎖定來確保資料為「讀取認可」。因為 SQL Server Compact Edition 在變更資料時使用頁面版本機制,使得 SELECT 陳述式所需的資料可從適當的頁面複本來讀取。而不需要取得 S 鎖定以確保「讀取認可」。因此,雖然 SQL Server Compact Edition 針對 SELECT 陳述式使用 NOLOCK,不過資料是在「讀取認可」的隔離等級所讀取。您不能在 SQL Server Compact Edition 中使用 Dirty Read(讀取未認可)。

附註:
NOLOCK 提示不會影響 Sch-S 或 Sch-X 鎖定。

請參閱

概念

瞭解鎖定
交易隔離等級
顯示鎖定資訊
鎖定逾時

說明及資訊

取得 SQL Server Compact Edition 協助