SET LOCK_TIMEOUT (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Specifica l'intervallo in millisecondi durante il quale un'istruzione rimane in attesa del rilascio di un blocco.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SET LOCK_TIMEOUT timeout_period  

Argomenti

timeout_period
Intervallo di attesa, in millisecondi, prima che Microsoft SQL Server restituisca un errore di blocco. Il valore -1 (predefinito) corrisponde a nessun periodo di timeout, ovvero a un'attesa infinita.

Quando l'attesa per un blocco supera il valore di timeout, viene restituito un errore. Un valore uguale a 0 significa nessuna attesa e non appena viene incontrato un blocco viene visualizzato un messaggio.

Osservazioni:

All'inizio di una connessione tale impostazione è uguale a -1. Se viene modificata, la nuova impostazione rimane attiva per il resto della connessione.

L'opzione SET LOCK_TIMEOUT viene impostata in fase di esecuzione, non in fase di analisi.

L'hint di blocco READPAST è un'alternativa all'opzione SET.

Le istruzioni CREATE DATABASE, ALTER DATABASE e DROP DATABASE non rispettano l'impostazione di SET LOCK_TIMEOUT.

Autorizzazioni

È richiesta l'appartenenza al ruolo public .

Esempi

A. Impostare il timeout di blocco su 1800 millisecondi.

Nell'esempio seguente il timeout per l'attesa del blocco viene impostato su 1800 millisecondi.

SET LOCK_TIMEOUT 1800;  
GO  

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

B. Impostare il timeout di blocco sull'attesa infinita per il rilascio di un blocco.

Nell'esempio seguente il timeout di blocco è impostato per l'attesa infinita e non ha scadenza. Questo comportamento predefinito è già impostato all'inizio di ogni connessione.

SET LOCK_TIMEOUT -1;  

Nell'esempio seguente il timeout per l'attesa del blocco viene impostato su 1800 millisecondi. In questa versione, Azure Synapse Analytics analizzerà correttamente l'istruzione, ma ignorerà il valore 1800 e continuerà a usare il comportamento predefinito.

SET LOCK_TIMEOUT 1800;  

Vedi anche

@@LOCK_TIMEOUT (Transact-SQL)
Istruzioni SET (Transact-SQL)