Pergunta

Eu tenho dois servidores, o primeiro com o SQL Server 2005 eo segundo com o SQL Server 2000. Eu quero inserir dados do 2005 ao 2000 e eu quero fazê-lo UNSYNC (sem transações distribuídas porque "Salvar transação "são usados).

Uma vez que a informação é inserida nas tabelas do Server 2000, alguns em vez-de gatilhos são disparados para processar esta informação.

Nesse cenário, decidi usar o Service Broker. Então, eu tenho um procedimento armazenado para inserir informações de um servidor para o outro e ele funciona perfeitamente.

Mas quando eu chamar esse procedimento a partir do procedimento mensagem de processo de fila alvo falhar, e eu não sei por quê !!

Além disso, eu sei que funciona porque quando eu uso a mesma estrutura (filas e procedimentos armazenados) para copiar forma um banco para outro no mesmo SQL 2005 servidor.

Por isso, não apenas entre máquinas, alguém sabe por que ou como obter mais informações sobre a causa da falha? Ou como inserir dados UNSYNC (eu não posso usar o Agente SQL porque eu quero inserir as informações mais freqüentemente do que 1 minuto).

Foi útil?

Solução

O problema mais comum é que o procedimento SSB usa WAITFOR e WAITFOR é incompatível com transações distribuídas. A única solução é para se livrar do WAITFOR (receber) e usar um comum RECEBER vez.

Outras dicas

Considere o uso de um servidor vinculado em vez de corretor de serviço. Com um servidor vinculado, você pode:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top