SQL Server Service Broker para inserir dados em um SQL Server 2000
-
10-07-2019 - |
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).
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