Einfügungen von einem Trigger in eine Tabelle auf dem Verbindungsserver durchführen – schlechte Entscheidung. Dies wirkt sich stark auf die Einfügungsleistung in der Quelltabelle ([dbo].[Table_1]) aus, und außerdem gibt es eine verteilte Transaktion und die Konfiguration von Servern zur Unterstützung verteilter Transaktionen – Alptraum.
Eine mögliche Lösung ist:
-
Auf dem Quellserver können Sie eine Synchronisationswarteschlangentabelle erstellen. Zum Beispiel:
CREATE TABLE dbo.SyncQueue ( QueueId INT IDENTITY(1,1), KeyForSync INT, -- Primary key value of record in dbo.SourceTable SyncStatus INT -- statuses can be: 0 - New, 1 - Synchronized, 2 - Error ) suppose you source table is CREATE TABLE dbo.SourceTable ( Key INT, -- primary key of the table Data varchar(xxx) )
-
Trigger auf dbo.SourceTable kann schnell in dbo.SyncQueue den Datensatzschlüssel einfügen, den Sie synchronisieren müssen
- Einige regelmäßig ausgeführte gespeicherte Prozeduren können dann Datensätze aus der Warteschlange intable auf dem Verbindungsserver einfügen.