JetGetLock fonction)
S’applique à : Windows | Windows Serveurs
JetGetLock fonction)
La fonction JetGetLock fournit un moyen de réserver explicitement la possibilité de mettre à jour une ligne, un verrou en écriture ou d’empêcher explicitement une ligne d’être mise à jour par une autre session, verrou de lecture. Normalement, les verrous d’écriture de ligne sont acquis implicitement en raison de la mise à jour des lignes. Les verrous de lecture ne sont généralement pas requis en raison du contrôle de version des enregistrements. Toutefois, dans certains cas, une transaction peut souhaiter verrouiller explicitement une ligne pour appliquer la sérialisation, ou pour s’assurer qu’une opération suivante réussira en vertu du fait que les verrous requis ont déjà été pris.
JET_ERR JET_API JetGetLock(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in JET_GRBIT grbit
);
Paramètres
sesid
Session qui sera utilisée pour cet appel.
TableID
Curseur qui sera utilisé pour cet appel.
grbit
Groupe de bits qui contiennent les options à utiliser pour cet appel, qui incluent zéro ou plusieurs des éléments suivants :
Valeur |
Signification |
|---|---|
JET_bitReadLock |
Cet indicateur provoque l’acquisition d’un verrou de lecture sur l’enregistrement en cours. Les verrous de lecture sont incompatibles avec les verrous d’écriture déjà détenues par d’autres sessions, mais sont compatibles avec les verrous de lecture détenus par d’autres sessions. |
JET_bitWriteLock |
Cet indicateur provoque l’acquisition d’un verrou d’écriture sur l’enregistrement en cours. Les verrous d’écriture ne sont pas compatibles avec les verrous d’écriture ou de lecture détenus par d’autres sessions, mais sont compatibles avec les verrous de lecture détenus par la même session. |
Valeur renvoyée
Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. pour plus d’informations sur les erreurs ESE possibles, consultez erreurs du moteur de Stockage Extensible et paramètres de gestion des erreurs.
Code de retour |
Description |
|---|---|
JET_errSuccess |
L’opération s’est terminée avec succès. |
JET_errClientRequestToStopJetService |
Il n’est pas possible de terminer l’opération, car toute activité sur l’instance associée à la session a été interrompue suite à un appel à JetStopService. |
JET_errInstanceUnavailable |
Il n’est pas possible de terminer l’opération, car l’instance associée à la session a rencontré une erreur irrécupérable qui requiert que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données. cette erreur est renvoyée uniquement par Windows XP et les versions ultérieures. |
JET_errInvalidgrbit |
Le Grbit donné n’est ni JET_bitReadLock ni JET_bitWriteLock. Il doit s’agir de l’un de ces deux indicateurs. |
JET_errNoCurrentRecord |
Le curseur doit se trouver sur un enregistrement pour pouvoir acquérir un verrou. Les verrous sont des enregistrements Always on. |
JET_errNotInitialized |
Impossible de terminer l’opération, car l’instance associée à la session n’a pas encore été initialisée. |
JET_errNotInTransaction |
Les verrous ne peuvent être obtenus que par les sessions dans une transaction. |
JET_errPermissionDenied |
Le curseur ne peut pas être en lecture seule et acquérir un verrou en écriture. |
JET_errRestoreInProgress |
Il n’est pas possible de terminer l’opération, car une opération de restauration est en cours sur l’instance associée à la session. |
JET_errSessionSharingViolation |
La même session ne peut pas être utilisée simultanément pour plusieurs threads. cette erreur est renvoyée uniquement par Windows XP et les versions ultérieures. |
JET_errTermInProgress |
Il n’est pas possible de terminer l’opération, car l’instance associée à la session est en cours d’arrêt. |
JET_errTransReadOnly |
La session doit avoir des autorisations d’écriture pour acquérir un verrou d’écriture. |
JET_errWriteConflict |
L’erreur retournée lorsqu’un verrou en conflit est demandé. |
En cas de réussite, la session a acquis le verrou demandé.
En cas d’échec, la session n’a pas acquis le verrou demandé.
Remarques
Les verrous d’écriture ne peuvent pas être obtenus avec les sessions ou les curseurs qui ont des autorisations en lecture seule, même si la session et le curseur n’effectuent pas d’opération de mise à jour. La session et le curseur doivent tous deux avoir des privilèges d’écriture pour acquérir un verrou d’écriture.
Les verrous de lecture et d’écriture sont un moyen de verrouillage pessimiste. Le verrouillage pessimiste s’attend à ce que plusieurs sessions simultanées soient en conflit et acquièrent des verrous à l’avance pour s’assurer que leurs opérations se déroulent correctement.
La plupart des opérations seront sérialisables en raison des verrous pris implicitement. Toutefois, certaines opérations ne le seront pas. Pour illustrer cela, examinez les deux transactions,
T1 : R (A), U (B)
T2 : R (B), U (A)
Le contrôle de version de l’enregistrement garantit que chaque transaction exécutée simultanément verra les valeurs d’origine pour A et B. Il n’y a pas d’ordre d’exécution en série qui peut produire les mêmes résultats pour A et B dans le cas où les résultats sont dépendants des données lues. Pour que l’application puisse sérialiser cette transaction, elle doit acquérir un verrou de lecture explicite sur A et B dans chaque transaction lorsque la valeur est lue.
Configuration requise
| Condition requise | Valeur |
|---|---|
Client |
requiert Windows Vista, Windows XP ou Windows 2000 Professional. |
Serveur |
nécessite Windows server 2008, Windows server 2003 ou Windows 2000 server. |
En-tête |
Déclaré dans esent. h. |
Bibliothèque |
Utilisez ESENT. lib. |
DLL |
Requiert ESENT.dll. |
Voir aussi
JET_ERR
JET_SESID
JET_TABLEID
JetPrepareUpdate
JetStopService
JetUpdate