Sugerencias de bloqueo

Puede especificar un intervalo de sugerencias de bloqueo de nivel de tabla utilizando las instrucciones SELECT, INSERT, UPDATE y DELETE para modificar el comportamiento de bloqueo predeterminado de Microsoft SQL Server Compact 4.0. Utilice las sugerencias de bloqueo solo cuando sea absolutamente necesario. Pueden repercutir negativamente en la simultaneidad.

Importante

SQL Server Compact 4.0 adquiere automáticamente los bloqueos necesarios para una operación. Si utiliza las sugerencias de bloqueo mostradas en la siguiente tabla, SQL Server Compact 4.0 aumentará el número de bloqueos que se producirán. No puede utilizar las sugerencias de bloqueo para impedir recursos de bloqueo.

En la siguiente tabla se describen las sugerencias de bloqueo que puede utilizar en SQL Server Compact 4.0.

Nombre de sugerencia de bloqueo

Descripción de la sugerencia

GRANULARIDAD

ROWLOCK

Utilice los bloqueos de nivel de filas cuando lea o modifique datos. Se adquieren y liberan según sea necesario.

Las operaciones de SELECT realizan bloqueos S en las filas.

PAGLOCK

Utilice los bloqueos de nivel de página cuando lea o modifique datos. Se adquieren y liberan según sea necesario.

Las operaciones de SELECT realizan bloqueos S en las páginas.

TABLOCK

Utilice un bloqueo de tabla cuando lea o modifique datos. Este bloqueo se mantiene hasta el final de la instrucción.

Las operaciones de SELECT realizan bloqueos S en las tablas.

DBLOCK

Utilice un bloqueo de base de datos cuando lea o modifique datos. Este bloqueo se mantiene hasta el final de la instrucción.

Las operaciones de SELECT realizan bloqueos S en las bases de datos.

MODOS DE BLOQUEO

UPDLOCK

Utilice bloqueos de actualización en lugar de bloqueos compartidos cuando lea una tabla, y bloqueos de retención hasta el final de la instrucción o transacción. UPDLOCK le permite leer datos sin bloquear otros lectores y actualizarlos posteriormente con la garantía de que no se han cambiado desde la última vez que los leyó.

Las operaciones de SELECT realizan bloqueos U. La granularidad predeterminada es ROWLOCK.

XLOCK

Utilice bloqueos exclusivos en lugar de bloqueos compartidos cuando lea una tabla, y bloqueos de retención hasta el final de la instrucción o transacción.

Las operaciones de SELECT realizan bloqueos X. La granularidad predeterminada es ROWLOCK.

DURACIÓN

HOLDLOCK

Utilice un bloqueo de retención para retener el bloqueo hasta que termine la transacción, en lugar de liberar el bloqueo en cuanto la tabla, fila o página de datos necesaria ya no se necesite.

Si no especifica ninguna granularidad, se aplicará ROWLOCK.

NOLOCK

No aplica ningún bloqueo. Se trata del valor predeterminado para operaciones SELECT. No se aplica a las instrucciones INSERT, UPDATE ni DELETE.

NotaNota
Con SQL Server, una sugerencia NOLOCK habilita el comportamiento de lectura no confirmada (Read Uncommitted). Con SQL Server Compact 4.0, el uso de una sugerencia NOLOCK sigue ofreciendo un nivel de aislamiento de lectura confirmada (Read Committed). SQL Server Compact 4.0 mantiene copias de los datos para garantizar que éstos puedan leerse sin necesidad de compartir bloqueos que ayuden a proteger los datos.

Para obtener más información acerca de cómo utilizar las sugerencias de bloqueo, vea el tema sobre sugerencias de bloqueo en los Libros en pantalla de SQL Server.

Sugerencia NOLOCK

El uso de sugerencias de bloqueo en SQL Server Compact 4.0 es parecido al de SQL Server. No obstante, en SQL Server Compact 4.0, la sugerencia NOLOCK tiene un comportamiento diferente del que tiene en SQL Server. En SQL Server Compact 4.0, la sugerencia NOLOCK es el valor predeterminado para las instrucciones SELECT, pero sigue imponiendo el comportamiento de lectura confirmada (Read Committed).

En SQL Server, una instrucción SELECT con el nivel de aislamiento predeterminado de Read Committed hace que se realicen y liberen bloqueos S en las filas a medida que se van leyendo. Aunque esto impone el nivel de aislamiento, significa que la instrucción SELECT espera si existe un bloqueo incompatible en una fila para la que se requiere un bloqueo S. Cuando se especifica la sugerencia NOLOCK, la operación SELECT no intenta realizar el bloqueo S y se leen los datos. Aunque esto permite que se lleve a cabo la operación, también conlleva que la instrucción SELECT podrá leer datos no confirmados.

SQL Server Compact 4.0 no utiliza bloqueos S para garantizar que los datos sean de lectura confirmada (Read Committed). Puesto que SQL Server Compact 4.0 utiliza un mecanismo de versiones de página al cambiar los datos, los datos necesarios para una instrucción SELECT se pueden leer desde la copia apropiada de la página. No es necesario realizar bloqueos S para garantizar la lectura confirmada (Read Committed). Por tanto, aunque SQL Server Compact 4.0 utilice NOLOCK para una instrucción SELECT, los datos se leen en el nivel de aislamiento de Read Committed. No puede tener una lectura no actualizada (lectura no confirmada) con SQL Server Compact 4.0.

Nota

La sugerencia NOLOCK no afecta a los bloqueos Sch-S o Sch-X.

Vea también

Conceptos

Descripción de bloqueos

Nivel de aislamiento de transacción

Mostrar la información de bloqueo

Tiempo de espera para bloqueo