Configurando o DTC no SQL Server

Olá Pessoal!

Nessa última semana participei de uma migração de infraestrutura de um sistema de gerenciamento de serviço, basicamente o host de banco de dados (SQL Server 2016) seria alterado para um novo em outra localidade.

O que parecia ser um procedimento padrão, demandou um trabalho adicionado devido ao MSDTC (Microsoft Distributed Transaction Coordinator) que estava configurado no antigo ambiente e era necessário para o funcionamento de um dos módulos da aplicação. Como o antigo ambiente foi absorvido sem documentação, a necessidade de configuração do DTC só foi percebida depois que a aplicação retornou o seguinte erro ao tentar iniciar:

A mensagem informa que a base especificada não suporta transações XA. Ao pesquisar por essa mensagem foi possível fazer a relação com o DTC, afinal existe uma opção para habilitar as transacoes XA dentro das propriedades do DTC.

Reproduzi as mesmas configurações do DTC que existiam no antigo ambiente para novo, mas mesmo assim a aplicação ainda apresentava erro e nenhuma estatística de transação era gerada. As configurações do DTC podem ser vistas acessando o menu de Component Services dentro do Windows Server:

Navegando nos demais sites relacionados a consulta inicial, foi possível ver alguns procedimentos adicionais que deveriam ser executados no SQL Server, além da configuração já feita no DTC no SO. No site da IBM abaixo, por exemplo, é apresentado um passo a passo do que deve ser feito bem simples, pois o suporte das transações XA é feito pelo driver JDBC para SQL Server, permitindo dessa forma o inicio das operações com transações distribuídas necessário para o funcionamento da aplicação.

https://www.ibm.com/support/knowledgecenter/en/SSFTN5_8.5.5/com.ibm.wbpm.imuc.ebpm.doc/topics/db_xa_nd_aix.html

Em determinado ponto do passo a passo apresentado no site da IBM, é feito referencia aos arquivos sqljdbc_xa.dll e xa_install.sql. Esses arquivos podem ser obtidos através do driver JDBC para SQL Server, segue o link abaixo para download:

https://www.microsoft.com/en-us/download/details.aspx?id=55539

Dentro dos arquivos extraídos terá um diretório com o nome “XA”, com uma breve navegação sera possível encontrar os arquivos sqljdbc_xa.dll e xa_install.sql. Os passos a seguir devem feitos conforme informado no site da IBM, são eles:

  • Copy the sqljdbc_xa.dll file from the JDBC unarchived directory to the Binn directory (for a default SQL Server install, the location is C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/Binn) of SQL Server computer. If you are using XA transactions with a 32-bit SQL Server, use the sqljdbc_xa.dll file in the x86 folder, even if the SQL Server is installed on a x64 processor. If you are using XA transactions with a 64-bit SQL Server on the x64 processor, use the sqljdbc_xa.dll file in the x64 folder.
  • Run the xa_install.sql database script on SQL Server. For example; from the command prompt, run sqlcmd -i xa_install.sql. This script installs the extended stored procedures that are called by sqljdbc_xa.dll. These extended stored procedures implement distributed transaction and XA support for the Microsoft SQL Server JDBC Driver. You will need to run this script as an administrator of the SQL Server instance. You can ignore errors about unable to drop procedures that don’t exist.
  • Open the SQL Server Management Studio to locate the security folder under the master database. To grant permissions to a specific user to participate in distributed transactions with the JDBC driver, add the user to the SqlJDBCXAUser role in the master database (for example, for a Lombardi user add master database in User mappings and check SqlJDBCXAUser role).

Após concluir os passos acima a aplicação subiu sem problemas e imediatamente as estatísticas de transações começaram a ser carregadas:

Até a próxima!

Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s