Share via


Indicateurs de verrouillage (SQL Server Compact Edition)

Vous pouvez spécifier une série d'indicateurs de verrouillage de niveau table à l'aide des instructions SELECT, INSERT, UPDATE et DELETE pour modifier le comportement du verrouillage par défaut de Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition). Utilisez uniquement des indicateurs de verrouillage lorsque cela est absolument nécessaire. Ils peuvent avoir un effet défavorable sur l'accès concurrentiel.

Important :
SQL Server Compact Edition acquiert automatiquement les verrous requis pour une opération. Si vous utilisez les indicateurs de verrouillage répertoriés dans le tableau ci-dessous, SQL Server Compact Edition augmente le nombre de verrouillages. Vous ne pouvez pas utiliser des indicateurs de verrouillage pour éviter le verrouillage de ressources.

Le tableau ci-dessous décrit les indicateurs de verrouillage que vous pouvez utiliser dans SQL Server Compact Edition.

Nom de l'indicateur de verrouillage Description de l'indicateur

GRANULARITY

ROWLOCK

Utilise des verrous de niveau ligne lors de la lecture ou la modification de données. Ces verrous sont acquis et libérés aux moments adéquats.

Les opérations SELECT prennent des verrous S sur les lignes.

PAGLOCK

Utilise des verrous de niveau page lors de la lecture ou la modification de données. Ces verrous sont acquis et libérés aux moments appropriés.

Les opérations SELECT prennent des verrous S sur les pages.

TABLOCK

Utilise des verrous de niveau table lors de la lecture ou la modification de données. Ce verrou est maintenu jusqu'à la fin de l'instruction.

Les opérations SELECT prennent des verrous S sur les tables.

DBLOCK

Utilise un verrou de base de données lors de la lecture ou la modification de données. Ce verrou est maintenu jusqu'à la fin de l'instruction.

Les opérations SELECT prennent des verrous S sur les bases de données.

LOCKMODES

UPDLOCK

Utilise des verrous de mise à jour au lieu de verrous partagés lors de la lecture d'une table, et utilise des verrous persistants jusqu'à la fin de l'instruction ou de la transaction. UPDLOCK vous permet de lire des données sans bloquer d'autres lecteurs, et de les mettre à jour avec l'assurance que les données n'ont pas été modifiées depuis votre dernière lecture.

Les opérations SELECT prennent des verrous U. La granularité par défaut est ROWLOCK.

XLOCK

Utilise des verrous exclusifs au lieu de verrous partagés lors de la lecture d'une table, et utilise des verrous persistants jusqu'à la fin de l'instruction ou de la transaction.

Les opérations SELECT prennent des verrous X. La granularité par défaut est ROWLOCK.

DURATION

HOLDLOCK

Utilise un verrou persistant pour conserver un verrou jusqu'à la fin de la transaction, au lieu de relâcher le verrou dès que la table, la ligne ou la page de données n'est plus nécessaire.

Si aucune granularité n'est spécifiée, c'est ROWLOCK qui est appliqué.

NOLOCK

Ne génère pas de verrous. C'est la valeur par défaut pour les opérations SELECT. Elle ne s'applique pas aux instructions INSERT, UPDATE et DELETE.

Remarque :
Avec SQL Server, un indicateur NOLOCK active le fonctionnement en Lecture non validée. Avec SQL Server Compact Edition, l'utilisation d'un indicateur NOLOCK confère le niveau d'isolement Lecture validée. SQL Server Compact Edition conserve des copies des données pour garantir que les données peuvent être lues sans recourir à des verrous de partage pour les protéger.

Pour plus d'informations sur l'utilisation des indicateurs de verrouillage, consultez « Indicateurs de verrouillage » dans la documentation en ligne de SQL Server.

Indicateur NOLOCK

L'utilisation d'indicateurs de verrouillage dans SQL Server Compact Edition est similaire à leur utilisation dans SQL Server. Toutefois, dans le cas de SQL Server Compact Edition, l'indicateur NOLOCK a un fonctionnement très différent de celui qu'il a dans SQL Server. Dans SQL Server Compact Edition, l'indicateur NOLOCK est l'indicateur par défaut pour les instructions SELECT, mais cela impose encore le fonctionnement en Lecture validée.

Dans SQL Server, une instruction SELECT avec le niveau d'isolement par défaut en Lecture validée fait que des verrous S sont appliqués et libérés sur les lignes lorsqu'elles sont lues. Bien que ceci impose le niveau d'isolement, cela signifie qu'une instruction SELECT se met en attente dans le cas où un verrou incompatible existe sur une ligne pour laquelle un verrou S est requis. Quand l'indicateur NOLOCK est spécifié, l'opération SELECT n'essaye pas de prendre le verrou S et les données sont lues. Si cela permet à l'opération d'aboutir, cela signifie aussi que l'instruction SELECT peut lire des données non validées.

SQL Server Compact Edition n'utilise pas de verrous S pour vérifier que les données sont en Lecture validée. Comme SQL Server Compact Edition utilise un mécanisme de gestion de version des pages lors de la modification de données, les données qui sont requises par une instruction SELECT peuvent être lues à partir de la copie appropriée de la page. Il n'est pas nécessaire de prendre des verrous S pour s'assurer que les données sont en Lecture validée. Par conséquent, même si SQL Server Compact Edition utilise NOLOCK pour une instruction SELECT, les données sont lues avec le niveau d'isolement Lecture validée. Vous ne pouvez pas effectuer une lecture incorrecte (Lecture non validée) avec SQL Server Compact Edition.

Remarque :
L'indicateur NOLOCK n'a pas d'effet sur les verrous Sch-S et Sch-X.

Voir aussi

Concepts

Présentation du verrouillage
Niveau d'isolement des transactions
Affichage des informations de verrouillage
Délai d'expiration du verrouillage

Aide et information

Assistance sur SQL Server Compact Edition