sql >> Base de Datos >  >> RDS >> Sqlserver

Bloqueo pesimista en T-SQL

Si está esperando otro recurso, como un usuario final, siga el consejo de Dave Markle y no lo haga.

De lo contrario, intente con el siguiente código T-SQL:

BEGIN TRAN

SELECT *
FROM   authors AU
WITH   (HOLDLOCK, ROWLOCK)
WHERE  AU.au_id = '274-80-9391'

/* Do all your stuff here while the row is locked */

COMMIT TRAN

El HOLDLOCK La sugerencia le pide cortésmente a SQL Server que mantenga el bloqueo hasta que confirme la transacción. El ROWLOCK La sugerencia pide cortésmente a SQL Server que bloquee solo esta fila en lugar de emitir un bloqueo de página o tabla.

Tenga en cuenta que si se ven afectadas muchas filas, SQL Server tomará la iniciativa y escalará a bloqueos de página, o tendrá todo un ejército de bloqueos de filas llenando la memoria de su servidor y atascando el procesamiento.