共用方式為


鎖定逾時

如果 MicrosoftSQL Server Compact 4.0 無法將鎖定授與某個資源上的交易,因為會與該資源上另一交易的鎖定發生衝突,此時,要求鎖定的交易會被封鎖,直到擁有鎖定的交易釋放鎖定為止。這種情況也可能由死結導致,SQL Server Compact 4.0 已預設兩秒的鎖定逾時期限,除非嘗試存取資料並等待可能逾時,否則您無法在鎖定資源之前測試它是否已鎖定。

注意

您可使用 sys.lock_information 系統檢視來判定鎖定要求是否被封鎖,並協助判定封鎖者。如需詳細資訊,請參閱<顯示鎖定資訊>。

LOCK_TIMEOUT 設定允許應用程式設定陳述式等待被封鎖資源的最長時間,如果陳述式等待的時間超過 LOCK_TIMEOUT 設定,則會自動取消被封鎖的陳述式,並將錯誤訊息 SSCE_M_LOCKTIMEOUT,「系統等待鎖定時發生逾時」傳回給應用裝置。不過,SQL Server Compact 4.0 不會回復或取消任何包含該陳述式的交易,應用程式必須具有可設陷處理錯誤訊息 SSCE_M_LOCKTIMEOUT 的錯誤處理常式。如果應用程式沒有設陷處理錯誤,會在不知道交易中某個陳述式已取消的情況下繼續執行,錯誤可能因此發生,因為交易中稍後的陳述式可能依存於未執行的陳述式。

實作設陷處理錯誤訊息 SSCE_M_LOCKTIMEOUT 的錯誤處理常式,可允許應用程式處理逾時情況,並採取補救措施,例如自動重新提交被封鎖的陳述式,或是復原整個交易。

若要設定工作階段的目前 LOCK_TIMEOUT 設定,請執行 SET LOCK_TIMEOUT 語法,如下列程式碼範例所示:

SET LOCK_TIMEOUT 2000;

請參閱

概念

了解鎖定

交易隔離等級

鎖定提示