SET LOCK_TIMEOUT (Transact-SQL)

適用於:SQL ServerAzure SQL資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

指定陳述式等待鎖定釋出的毫秒數。

Transact-SQL 語法慣例

Syntax

SET LOCK_TIMEOUT timeout_period  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

timeout_period
Microsoft SQL Server 傳回鎖定錯誤之前所經歷的毫秒數。 -1 值 (預設值) 表示沒有逾時期限 (也就是永久等待)。

當等待鎖定超出逾時值時,會傳回錯誤。 0 值表示完全不等待,且在發現鎖定之後,儘快傳回一則訊息。

備註

在開始連線時,這個設定的值為 -1。 變更之後,新設定會在接下來的連線時間內維持有效。

SET LOCK_TIMEOUT 的設定是在執行階段進行設定,而不是在剖析階段進行設定。

READPAST 鎖定提示提供這個 SET 選項的替代方案。

CREATE DATABASE、ALTER DATABASE 和 DROP DATABASE 陳述式不接受 SET LOCK_TIMEOUT 設定。

權限

需要 public 角色的成員資格。

範例

A. 將鎖定逾時設定為 1800 毫秒

下列範例將鎖定逾時期限設為 1800 毫秒。

SET LOCK_TIMEOUT 1800;  
GO  

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

B. 將鎖定逾時設定為永久等待,直到釋放鎖定。

下列範例會將鎖定逾時設定為永久等待,且永不過期。 這是在每個連線一開始就已設定的預設行為。

SET LOCK_TIMEOUT -1;  

下列範例將鎖定逾時期限設為 1800 毫秒。 在此版本中,Azure Synapse Analytics 會成功剖析陳述式,但忽略值 1800 並繼續使用預設行為。

SET LOCK_TIMEOUT 1800;  

另請參閱

@@LOCK_TIMEOUT (Transact-SQL)
SET 陳述式 (Transact-SQL)