La différence majeure entre Oracle et SQL Server en matière de curseurs est que oracle, travaillant par defaut en versionning de ligne (copie des informations) et SQL Server en "live" sur les données, l'un bloque au niveau de la lecture (SQL Server) et l'autre uniquement si les données sont mises à jour à travers le curseur.
Pour remédier à cela, différentes solutions :
1) au niveau des curseurs, les ouvrir avec les options :
LOCAL FORWARD_ONLY STATIC READ_ONLY
2) globalement au niveau de la base
ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON
Ceci fera fonctionner votre base en versionning de ligne par défaut (comme Oracle) au lieu du niveau d'isolation READ COMMITTED qui est plus bloquant.
ATTENTION : il y a des implications dans les deux cas !
A +
Partager