O disparador não está funcionando no servidor LInked. Ambos os servidores são SQL Server 2005

3

Eu tenho um servidor de link com outro servidor. Eu posso acessar registros do servidor vinculado e também posso inserir o registro usando a instrução INSERT como

INSERT INTO [LINKED-SERVER-IP].MyDb.dbo.Customer (CustomerId, CustomerName)
SELECT CustomerId, CustomerName FROM MyCustomers WHERE CustomerId = 5

Acima do trabalho de consulta, ok e insira o registro, mas quando eu uso essa consulta no Trigger, recebo o seguinte erro.

O provedor OLE DB "SQLNCLI" para o servidor vinculado "Linked-Server-IP" retornou a mensagem "O gerenciador de transações do parceiro desabilitou seu suporte para transações remotas / de rede." Algum erro ocorreu. Msg 3616, nível 16, estado 1, linha 1 Transação condenada no gatilho. O lote foi cancelado.

Obrigado.

    
por Kashif 23.06.2010 / 09:32

1 resposta

2

O código nos acionadores é executado dentro da mesma transação implícita que a instrução insert / update / delete. Portanto, ele está tentando compartilhar a transação entre os dois servidores, o que não é permitido por padrão.

Você tem privilégios suficientes para alterar as configurações? Caso contrário, você poderá considerar outras opções, como inserir em uma tabela local e replicar os dados, ou usar o Service Broker para obter outro processo para fazer a inserção remota.

    
por 23.06.2010 / 10:52