Question

Nous exécutons les requêtes suivantes à l'aide de Dynamic SQL, ce qui est en train de décorer pour quelques cas lorsque nous exécutons des instances simultanées. L'erreur est:

Impossible de continuer à scanner avec Nolock en raison du mouvement des données ...

Cette question Dit que cette erreur est lancée lorsqu'un processus lit des données qui sont supprimées par un autre processus. Notre processus est de supprimer et de lire les mêmes lignes, mais l'une après l'autre selon la requête suivante (la SELECT est après le DELETE):

DELETE FROM Table1
WHERE colum1 = somevalue1
AND column2 = somevalue2

SELECT COUNT(*) 
FROM Table1 WITH (NOLOCK)
WHERE colum1 = somevalue1
AND column2 = somevalue2

J'essaie de comprendre l'exécution de la requête ci-dessus. Comme le SELECT n'est pas engagé, commence-t-il à s'exécuter avant le DELETE est engagé? Cela signifierait-il que la suppression du NOLOCK Un indice arrêterait l'erreur?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top