Compartir a través de


sp_releaseapplock (Transact-SQL)

Libera un bloqueo en un recurso de aplicación.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_releaseapplock [ @Resource = ] 'resource_name' 
     [ , [ @LockOwner = ] 'lock_owner' ]
     [ , [ @DbPrincipal = ] 'database_principal' ]
[ ; ]

Argumentos

  • [ @Resource = ] 'resource_name'
    Es un nombre de recurso de bloqueo especificado por la aplicación cliente. La aplicación debe garantizar que el recurso es único. Al nombre especificado se le aplica internamente un algoritmo hash para obtener un valor que se puede almacenar en el administrador de bloqueos de SQL Server. resource_name es de tipo nvarchar(255) y no tiene ningún valor predeterminado. resource_name se compara con un binario, por tanto distingue entre mayúsculas y minúsculas, independientemente de la configuración de intercalación de la base de datos actual.

  • [ @LockOwner = ] 'lock_owner'
    Es el propietario del bloqueo, que es el valor de lock_owner cuando se solicitó el bloqueo. lock_owner es de tipo nvarchar(32). El valor puede ser Transaction (el predeterminado) o Session. Cuando el valor de lock_owner es Transaction, de manera predeterminada o especificándolo explícitamente, sp_getapplock debe ejecutarse desde una transacción.

  • [ @DbPrincipal = ] 'database_principal'
    Es el usuario, el rol o el rol de aplicación que tiene permisos para un objeto de una base de datos. El autor de la llamada de la función debe ser miembro del rol fijo de base de datos db_owner, database_principal o dbo para llamar a la función correctamente. El valor predeterminado es public.

Valores de código de retorno

>= 0 (correcto) o < 0 (error)

Valor

Resultado

0

El bloqueo se ha liberado correctamente.

-999

Indica un error de validación de parámetros u otro error de llamada.

Comentarios

Si una aplicación llama a sp_getapplock varias veces para el mismo recurso de bloqueo, es necesario llamar a sp_releaseapplock el mismo número de veces para liberar el bloqueo.

Los bloqueos se liberan si el servidor se cierra por cualquier razón.

Permisos

Debe pertenecer al rol public.

Ejemplos

En el ejemplo siguiente se libera el bloqueo asociado a la transacción actual en el recurso Form1 de la base de datos AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1', 
     @LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO