2009-08-26 4 views
0

Ich habe etwas zu tun auf einer größeren Datenbank, die grundsätzlich einen gespeicherten proc mit verschiedenen Parametern für jeden Wert in einer Tabelle aufrufen muss (ca. 20k Einträge). Ich möchte dies tun, ohne die Tabelle oder die anderen beteiligten Tabellen für jede Schleife zu blockieren, solange der gesamte Prozess ausgeführt wird. Ist es möglich innerhalb von SQL die Transaktionen auf einzelne Schleifen über den Cursor zu begrenzen?Kann ich die Blockierung auf einzelne Schleifen innerhalb meines SQL-Cursors beschränken

Es wird ziemlich einfach für mich sein, manuell zu überprüfen, ob es Änderungen an der Tabelle gab, die ich nach Abschluss des Prozesses durchlaufen habe, und für die neuen Einträge erneut auszuführen, so dass ich keine Änderungen verfolgen muss Das.

Antwort

0

Sie können die transaction isolation level so einstellen, dass sie nicht gesendet wird. aber sicher, das ist, was Sie wirklich wollen, da Sie schmutzig lesen, verlorene Updates, Phantom-Updates, etc ....

0

Ich würde vorschlagen, dass das Durchschleifen von 20000 Datensätze ist eine schlechte Wahl. Es ist besser, den gespeicherten Proc durch eine Set-basierte Lösung zu ersetzen. Sie sollten vermeiden, Cursor zu verwenden.

Verwandte Themen