none
Habilitar XA para Linked Server de Banco já criado. RRS feed

  • Pergunta

  • Prezados, estou utilizando SQL Server em uma aplicação Java que acessa o Banco.

    Hoje sou o Programador da equipe e meu conhecimento sobre o SQL Server está na base do basicão, ou seja, só conheço um pouco da sintaxe do mesmo.

    O grande complicador no projeto, é que a equipe que cuida do Banco de Dados é meio que (não sei nem o que vou dizer, mas lá vai) "amadora" para cuidar do BD.

    Em um trecho da aplicação, de dentro de um cluster do SQL, preciso fazer um update para um outro servidor que está conectado a esse via linked server. Ao executar o update, recebi o seguinte erro: [Unable to start a nested transaction for OLE DB provider "SQLNCLI" for linked server "LINKED_NOME_LINKED". A nested transaction was required because the XACT_ABORT option was set to OFF.]

    Entendi que preciso que o banco tenha a configuração de transações distribuídas ativo. Tem como fazer isso com Linked Server já criado ? Pois ao levantar o assunto com a equipe de banco a maioria se mostrou indisposta a pelo menos pesquisar sobre o assunto... Queria chegar já com os passos necessários para execução da alteração.

    PS: O que achei sobre o assunto, são exemplos ajudando a setar o XACT_ABORT em Procedures... Gostaria de saber se há como setar diretamente no Linked Server.

    Requisitos: Windows Server 2003, SQL Server 2005

    segunda-feira, 12 de março de 2012 20:03

Respostas

  • Boa Noite,

    A opção SET XACT_ABORT é utilizada para que na ocorrência de um erro, a transação seja revertida e essa configuração é obrigatória em transações distribuídas (as que utilizam Linked Servers). Uma vez que a opção é controlada em nível de sessão só é possível alterá-la no código e não é possível configurá-la automaticamente no Linked Server.

    Você terá que colocar SET XACT_ABORT ON antes de suas chamadas que atualizam dados via Linked Server. Eis uma boa razão para encapsular o código em Stored Procedures (seria ruim, disparar um comando SET XACT_ABORT e em seguida o comando de UPDATE).

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    • Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 13 de março de 2012 01:45
    • Marcado como Resposta Eder Costa sexta-feira, 16 de março de 2012 14:31
    terça-feira, 13 de março de 2012 01:44