Domanda

Ho due server, il primo con SQL Server 2005 e il secondo con SQL Server 2000. Voglio inserire dati dal 2005 al 2000 e voglio non sincronizzarli (senza transazioni distribuite perché " save transazione " sono utilizzati).

Dopo che le informazioni sono state inserite nelle tabelle del server 2000, alcuni trigger anziché i trigger vengono attivati ??per elaborare queste informazioni.

In quello scenario ho deciso di utilizzare Service Broker. Quindi ho una Stored Procedure per inserire informazioni da un server all'altro e funziona perfettamente.

Ma quando chiamo questa procedura dalla procedura del messaggio di processo della coda di destinazione non riesce e non so perché !!

Inoltre, so che funziona perché quando uso la stessa struttura (code e procedure memorizzate) per copiare da un database all'altro sullo stesso server SQL 2005.

Quindi fallisce solo tra le macchine, qualcuno sa perché o come ottenere maggiori informazioni sulla causa dell'errore? O come inserire dati non sincronizzati (non riesco a usare SQL Agent perché voglio inserire le informazioni più frequentemente di 1 minuto).

È stato utile?

Soluzione

Il solito problema è che la procedura SSB utilizza WAITFOR e WAITFOR non è compatibile con le transazioni distribuite. L'unica soluzione è quella di sbarazzarsi del WAITFOR (RECEIVE) e utilizzare invece un RECEIVE normale.

Altri suggerimenti

Prendi in considerazione l'utilizzo di un server collegato anziché del broker di servizi. Con un server collegato, puoi:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top