Frage

Ich habe zwei Servern, die erste mit SQL Server 2005 und die zweite mit SQL Server 2000. Ich möchte die Daten für 2000 von 2005 einzufügen, und ich will es tun unsync (ohne verteilte Transaktionen, weil „Transaktion speichern "verwendet werden).

Sobald die Informationen in den Tabellen des 2000-Server eingesetzt wird, werden einige stattdessen-Trigger gefeuert diese Informationen zu verarbeiten.

In diesem Szenario habe ich beschlossen, Service Broker zu verwenden. Also ich habe eine gespeicherte Prozedur Informationen von einem Server auf den anderen zu setzen und es funktioniert perfekt.

Aber wenn ich rufe Sie dieses Verfahren aus der Ziel-WS-Prozess Nachrichtenprozedur es nicht, und ich weiß nicht, warum !!

Auch ich weiß, es funktioniert, denn wenn ich die gleiche Struktur verwenden (Warteschlangen und Stored Procedures) Form einer Datenbank zur anderen auf dem gleichen SQL 2005 Server kopieren.

So ist es nur zwischen den Maschinen ausfällt, jemand weiß, warum oder wie man mehr Informationen über die Ursache des Fehlers zu bekommen? Oder, wie die Daten unsync einfügen (ich kann nicht den SQL-Agenten verwenden, weil ich die Informationen häufiger als 1 Minute eingefügt werden soll).

War es hilfreich?

Lösung

Das übliche Problem ist, dass die SSB Verfahren verwendet WAITFOR und WAITFOR ist mit verteilten Transaktionen unvereinbar. Die einzige Lösung ist der WAITFOR loszuwerden (RECEIVE) und verwenden ein gewöhnliches RECEIVE statt.

Andere Tipps

Betrachten Sie einen verknüpften Server anstelle von Service Broker. Mit einem verknüpften Server können Sie:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top