Exécution de la suppression séquentielle et non engagée
-
31-10-2019 - |
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