Compartir a través de


SET LOCK_TIMEOUT (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Especifica el número de milisegundos que una instrucción espera a que se libere un bloqueo.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SET LOCK_TIMEOUT timeout_period  

Argumentos

timeout_period
Es el número de milisegundos que pasarán antes de que Microsoft SQL Server devuelva un error de bloqueo. El valor -1 (predeterminado) indica que no hay límite de espera (es decir que se espera indefinidamente).

Cuando se espera un bloqueo durante más tiempo que el indicado, se devuelve un error. El valor 0 significa no esperar y devolver un mensaje en cuanto se encuentre un bloqueo.

Comentarios

Al principio de una conexión, este valor es -1. Después de cambiarlo, el nuevo valor permanece en vigor para el resto de la conexión.

La opción SET LOCK_TIMEOUT se establece en tiempo de ejecución, no en tiempo de análisis.

La sugerencia de bloqueo READPAST es una alternativa a esta opción SET.

Las instrucciones CREATE DATABASE, ALTER DATABASE y DROP DATABASE no respetan el parámetro SET LOCK_TIMEOUT.

Permisos

Debe pertenecer al rol public .

Ejemplos

A. Establecer el tiempo de espera de bloqueo en 1800 milisegundos

En el ejemplo siguiente se establece el período de tiempo de espera de bloqueo en 1800 milisegundos.

SET LOCK_TIMEOUT 1800;  
GO  

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

B. Establecer el tiempo de espera de bloqueo para esperar indefinidamente a se libere un bloqueo

En este ejemplo se establece el tiempo de espera de bloqueo para que espere indefinidamente y no expire nunca. Este es el comportamiento predeterminado que ya está establecido al principio de cada conexión.

SET LOCK_TIMEOUT -1;  

En el ejemplo siguiente se establece el período de tiempo de espera de bloqueo en 1800 milisegundos. En esta versión, Azure Synapse Analytics analizará la instrucción correctamente, pero omitirá el valor 1800 y seguirá usando el comportamiento predeterminado.

SET LOCK_TIMEOUT 1800;  

Consulte también

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