Partager via


Niveau d'isolement des transactions

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) fonctionne par défaut avec un niveau d'isolement read committed. Cependant, il peut être nécessaire à une application de fonctionner avec un autre niveau d'isolement. Pour implémenter des niveaux d'isolement différents dans des applications, vous pouvez personnaliser le verrouillage pour une session complète en définissant le niveau d'isolement de la session avec l'instruction SET TRANSACTION ISOLATION LEVEL.

Important :
Si le niveau d'isolement par défaut dans SQL Server Compact Edition est Read Committed (Lecture validée), l'utilisation de ce niveau n'a pas pour résultat l'application de verrous S quand des données sont lues. Ce comportement diffère de celui de Microsoft SQL Server. Dans SQL Server, lors de l'utilisation du niveau Lecture validée, un verrou S est demandé chaque fois qu'une ligne est lue, qui attendra si un verrou est en conflit sur cette ligne. SQL Server Compact Edition ne requiert pas de verrou S parce que les versions des pages de données sont automatiquement maintenues pour que les données validées puissent être lues sans qu'un verrou soit nécessaire. Ceci est important parce que, dans SQL Server Compact Edition, les opérations SELECT ne doivent pas appliquer de verrous sur les données et sont presque toujours effectuées avec succès. Les opérations SELECT ne doivent pas attendre si certaines données ont un verrou X, au contraire de SQL Server. Les opérations SELECT requièrent toujours un verrou Sch-S. L'opération va échouer seulement si la table est modifiée, car il y aura un verrouillage Sch-X en conflit.

Quand le niveau d'isolement est spécifié, le verrouillage fonctionne à ce niveau pour toutes les instructions SELECT de la session SQL Server Compact Edition et reste actif jusqu'à la fin de la session ou jusqu'à ce que le niveau d'isolement soit modifié. Par exemple, pour définir le niveau d'isolement des transactions à Sérialisable et garantir qu'aucune ligne fantôme ne peut être insérée par des transactions concurrentes dans la table Employee, utilisez l'instruction SQL suivante :

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN TRANSACTION;

SELECT EmployeeID FROM Employee;

Vous pouvez aussi définir le niveau d'isolement des transactions par programme. Voici un exemple de la façon de définir un niveau d'isolement des transactions avec ADO.NET :

SqlTransaction myTrans;

myTrans = myConnection.BeginTransaction(IsolationLevel.RepeatableRead);

Voir aussi

Concepts

Présentation du verrouillage
Affichage des informations de verrouillage
Indicateurs de verrouillage (SQL Server Compact Edition)
Délai d'expiration du verrouillage

Aide et information

Assistance sur SQL Server Compact Edition