Recentemente, me deparei com uma consulta de um cliente sobre problemas de conectividade entre o SSIS no servidor de banco de dados e um servidor de aplicativos. O cliente estava recebendo a mensagem de erro: “Falha ao conectar ao serviço Integration Services no computador ‘SQL’ com o seguinte erro: ‘Classe não registrada’.”
Ao analisar a mensagem de erro, ficou evidente que o problema estava relacionado a um problema de registro ou DLLs ausentes. Não era um problema de segurança ou bloqueio de conexão. Para começar a solucionar o problema, verifiquei as versões do SSIS e SSMS no servidor de aplicativos e descobri uma incompatibilidade de versão. É crucial que as versões do SSIS e SSMS correspondam para estabelecer uma conexão bem-sucedida.
Inicialmente, pensei que atualizar a versão do SSMS no servidor de aplicativos resolveria o problema. No entanto, mesmo após a atualização, encontrei uma mensagem de erro diferente: “O servidor RPC não está disponível. (Exceção de HRESULT: 0x800706BA) (Microsoft.SqlServer.DTSRuntimeWrap)”.
Neste ambiente específico, o SQL Server 2016 estava sendo executado como uma instância nomeada em uma porta estática. O login do aplicativo não tinha associação ao grupo de administradores locais no servidor de banco de dados, de acordo com os padrões da empresa. Para solucionar o problema, segui estas etapas:
- Verifiquei se o serviço RPC estava em execução, conforme indicado pela mensagem de erro.
- Garanti que a segurança estivesse configurada corretamente para o SSIS nas permissões de grupo administrador e DCOM, mesmo que não houvesse erros relacionados a permissões.
- Testei a conexão na porta 135 do servidor de aplicativos para o servidor de banco de dados usando o comando telnet, pois o SSIS utiliza esse número de porta.
Apesar de concluir essas etapas, o aplicativo ainda não conseguia se conectar ao SSIS. Neste ponto, descartei as permissões como causa do erro e considerei outras possibilidades, como problemas de rede ou bloqueio de conexão. Como os firewalls geralmente estão habilitados em servidores de banco de dados na maioria das empresas, suspeitei que o firewall poderia estar bloqueando a conexão.
Para testar essa hipótese, desativei temporariamente o firewall durante as horas não produtivas e descobri que a conexão começou a funcionar. No entanto, era essencial reativar o firewall e investigar o problema mais a fundo usando o comando netstat. Descobri que o SSIS não estava usando a porta 135, mas sim, estava sendo executado em uma faixa de portas superiores (dinâmicas) que mudavam toda vez que o serviço era reiniciado.
Para resolver o problema, era necessário garantir que todas as portas dinâmicas dentro da faixa de 49152-65535 estivessem abertas e que todas as conexões fossem permitidas a partir do MsDtsSrvr.exe. Criei uma regra no Firewall do Windows no servidor de banco de dados, especificando a configuração da regra de entrada da seguinte forma:
- Nome da regra: Test_RPC1
- Direção da regra: Entrada
- Ação da regra: Permitir a conexão
- Protocolo: TCP
- IP local: (10.10.xx.xx)
- IP remoto: Endereço IP do servidor de aplicativos – APP1
- Porta local: (vazio)
- Porta remota: 49152-65535
Após implementar essa regra, o problema de conectividade foi resolvido com sucesso e o cliente pôde se conectar ao SSIS sem mais problemas.
É importante observar que a resolução de problemas de conexão SSIS requer uma abordagem sistemática, considerando fatores como compatibilidade de versão, permissões, configuração de rede e configurações de firewall. Ao seguir as etapas descritas neste artigo, você pode diagnosticar e resolver problemas semelhantes em seu ambiente do SQL Server de forma eficaz.