Esecuzione di elimina sequenziale e lettura non impegnata
-
31-10-2019 - |
Domanda
Stiamo eseguendo le seguenti query usando SQL dinamico, che sta errondo per pochi casi quando eseguiamo istanze simultanee. L'errore è:
Non è stato possibile continuare a scansionare con NOLock a causa del movimento dei dati ...
Questa domanda Dice che questo errore viene lanciato quando un processo legge i dati che vengono eliminati da un altro processo. Il nostro processo sta eliminando e leggendo le stesse righe, tuttavia una dopo l'altra secondo la seguente query (il SELECT
è dopo il DELETE
):
DELETE FROM Table1
WHERE colum1 = somevalue1
AND column2 = somevalue2
SELECT COUNT(*)
FROM Table1 WITH (NOLOCK)
WHERE colum1 = somevalue1
AND column2 = somevalue2
Sto cercando di capire l'esecuzione della query sopra. Come la SELECT
non è impegnato, inizia a eseguire prima del DELETE
è impegnata? Questo significherebbe che rimuovere il NOLOCK
Il suggerimento fermerebbe l'errore?
Nessuna soluzione corretta