Pregunta

Tengo dos servidores, el primero con SQL Server 2005 y el segundo con SQL Server 2000. Quiero insertar datos del 2005 al 2000 y quiero hacerlo sin sincronizar (sin transacciones distribuidas porque "guardar" transacción '' se utilizan).

Una vez que la información se inserta en las tablas del servidor 2000, se activan algunos desencadenantes en lugar de disparadores para procesar esta información.

En ese escenario, decidí usar Service Broker. Así que tengo un Procedimiento almacenado para insertar información de un servidor a otro y funciona perfectamente.

¡Pero cuando llamo a este procedimiento desde el procedimiento de mensaje del proceso de la cola de destino, falla y no sé por qué!

Además, sé que funciona porque cuando uso la misma estructura (colas y procedimientos almacenados) para copiar de una base de datos a otra en el mismo servidor SQL 2005.

Entonces falla solo entre máquinas, ¿alguien sabe por qué o cómo obtener más información sobre la causa de la falla? O cómo insertar datos sin sincronizar (no puedo usar el Agente SQL porque quiero insertar la información con más frecuencia que 1 minuto).

¿Fue útil?

Solución

El problema habitual es que el procedimiento SSB utiliza WAITFOR y WAITFOR es incompatible con las transacciones distribuidas. La única solución es deshacerse del WAITFOR (RECIBIR) y usar un RECIBIR ordinario en su lugar.

Otros consejos

Considere usar un servidor vinculado en lugar de un intermediario de servicios. Con un servidor vinculado, puede:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top