Ich habe eine einfache gespeicherte Prozedur zum Auswählen, Formatieren und Kopieren von Datensätzen aus der TimeCard-Datenbank in unsere ERP-Datenbank. Beide sind SQL Server.Kopieren von Datensätzen mit gespeicherter Prozedur von SQL Server zu SQL Server (2005)
Es wird auf dem SQL Server-Agent als geplanter Job ausgeführt. Der Code sieht wie folgt nun
INSERT INTO linked_erpserver.db.SCHEMA.table01
SELECT *
FROM linked_timecardserver.db.SCHEMA.tablexx X
WHERE X.flag = 0
UPDATE linked_timecardserver.db.SCHEMA.tablexx
SET flag = 1
WHERE flag = 0
, nehme an, wenn es eine große Anzahl von Datensätzen und den Anschluss an verknüpfte Server ausgefallen ist, wird es katastrophale Auswirkungen sein.
Wie kann ich damit umgehen? Soll ich Datensätze einzeln auswählen, diesen Datensatz einfügen, aktualisieren und festschreiben.
EDIT: Wir verwenden SQL Server 2005
hi @rauf haben Sie den 'BEGIN TRAN' vor Ihren Transaktionen versucht? -> https://www.mssqltips.com/sqlservertutorial/3305/what-does-begin-tran-rollback-tran-and-commit-tran-mean/ –
@AndyK nicht sicher, dass über verknüpfte Server funktionieren würde. Vielleicht verteilte Transaktion beginnen? – Eli
@Rauf: Dieser Link könnte auch helfen: https: // stackoverflow.com/questions/506602/best-weg-zu-arbeiten-mit-transaktionen-in-ms-sql-server-management-studio Auch Senden an eine Staging-Tabelle und Überprüfen der Staging-Tabelle ist korrekt, bevor dann versuchen, es zu committen Ihr ERP würde Ihnen zusätzliches Vertrauen geben. – abraxascarab