Diese gespeicherte Prozedur wird jeden Tag mit einem Scheduler ausgeführt und die Daten werden über das Netzwerk übertragen. Wenn diese gespeicherte Prozedur ausgeführt wird und dann während des Ausführungsprozesses, tritt plötzlich ein Netzwerk-Timeout auf. Dadurch wird jede Zeile ausgeführt, die über das Netzwerk an den anderen Server gesendet wird.
Jetzt ist mein Problem:Brauchen Sie einen Rat. Danke
Sie könnten versuchen mit der verteilten Transaktion zu beginnen. Verteilte Transaktion ist in diesem Fall eine perfekte Lösung für verteilte Transaktionen wurden entworfen, um zwei oder mehr Server zu umfassen. Bei einer Transaktion, selbst wenn das System abstürzt, oder wenn ein Stromausfall auftritt, kann das System weiterhin in den konsistenten Zustand zurückkehren.
%Vor%Bei verteilten Transaktionen müssen Sie den Cursor nicht verwenden. In Ihrem Fall ist es besser, Parallelitätsprobleme zu vermeiden, indem Sie eine temporäre Tabelle erstellen. Der Grund dafür ist: Die INSERT-Anweisung kann einige Zeit dauern, und während sie Daten einfügt, kann Ihre Tabelle von einem anderen Benutzer aktualisiert werden, und die darauf folgende Update-Anweisung kann falsche Zeilen aktualisieren.
%Vor%Ich denke, du bist am falschen Ort verwirrt,
hier, 0 = The FETCH statement was successful.
So lange, bis der Abruf erfolgreich ist, wird die Schleife fortgesetzt, und wenn irgendein Fehler auftritt, wird sie mit allen Zeilen des erstellten Cursors enden. Und wenn kein Fehler aufgetreten ist
Sie sind logisch richtig, und es wird gut funktionieren, wenn die CursorSale
richtig definiert ist, an der richtigen Stelle ..
Weitere Ideen finden Sie im obigen Link
Ich hoffe, dies wird tun ..
Ich würde vorschlagen, anstatt jeden Datensatz zu loopen, den Einsatz in Chunks zu machen. Wie 5000 Datensätze gleichzeitig, wenn es ein automatisierter Job ist, dann wäre dies machbar.
Hier ist ein Link, den ich gefunden habe, aber im Grunde genommen würdest du jedes Mal Top 5000 machen, wenn du oben liegst. Ich stelle mir vor, wenn Sie einen Job haben, der einen Cursor auf jeden Datensatz für eine Einfügung führt, wird es wahrscheinlich sehr teuer.
Tags und Links sql sql-server rollback stored-procedures tsql