Como falei anteriormente, estou usando o SQL Server 2000 para um projetinho freela. Para me conectar ao SQL Server, baixei o driver jdbc jtds, pois li que ele funciona melhor que o driver jdbc fornecido pela Microsoft. Isto não me surpreende muito, pois a Microsoft não deve ter muito interesse em alavancar o uso de Java com o SQL Server, preferindo sempre empurrar o uso de .NET.Pois bem, eu estava tendo problemas para me conectar ao SQL Server via jdbc. Inicialmente o problema parecia ser da forma de autenticação, pois o servidor foi instalado com as opções default e as configurações padrão especificavam autenticação pelo Windows somente, sem autenticação pelo SQL Server. Eu encontrei na internet várias referências dizendo que os drivers jdbc para o SQL Server 2000 não suportam autenticação pelo Windows, então habilitei também a autenticação pelo banco de dados.
Após habilitar a autenticação pelo banco de dados, eu continuava sem conseguir conectar. Os problemas eram sempre os mesmos, e a mensagem de erro era essa aqui: “An error occurred while establishing the connection: Type: java.sql.SQLException Error Code: 0 SQL State: 08S01
Message: Network error IOException: Connection refused: connect”. Procurando por esse erro, encontrei algumas referências sugerindo conferir se o servidor estava configurado para permitir acesso por TCP/IP, e no meu caso estava sim.
Como eu não estava conseguindo conectar de forma alguma usando TCP/IP, tentei conectar através de named pipes, e funcionou. Minha URL de conexão com o uso de named pipes ficou da seguinte forma: jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=sistema_cms;namedPipe=true
Ah, um detalhe importante. Ao tentar usar essa URL com localhost em vez de 127.0.0.1 , eu recebia um erro dizendo que o nome da máquina não era encontrado na rede. Colocando o hostname correto da máquina (no meu caso, blpsilva-vostro) funcionou sem problemas também. Possivelmente esta solução que utilizei não é a melhor possível para situações mais críticas. Entretanto, para o meu caso esta solução excede bastante o “good enough”, então fiquei com ela mesmo.
OBS: Esse template do Wordpress tem o péssimo hábito de eventualmente cortar algumas frases que não caibam na largura da área central . Para não prejudicar a leitura aqui, segue abaixo novamente o nome do último parâmetro da URL jdbc:
namedPipe=true
Caro Bruno!
Seu post foi EXTREMAMENTE útil para minha equipe
na empresa em que trabalho.
Estávamos com este problema e não achávamos o erro!
Agora está tudo certo!
Obrigado
Opa, fico contente que isto tenha sido útil. Realmente é meio chatinho isso. Qualquer coisa, já sabe onde me encontrar
Olá Bruno,
estava com o mesmo problema, entrei em vario links na internet e encontrei muitas pessoas com o mesmo problema e sem solução.
Ninguem sabia informar o namedPipe, somente aqui encontrei a solução, obrigadão!
Cara, valeu mesmo. Simples, objetivo e funcional.
Cara, mais de um ano depois do Post…ainda me rendeu resultados…obrigado. Só uma dúvida, esse problema da conexão TCP pode ser resolvido através da reinstalação do SQL server? att,
Oi Felipe, recentemente tive um outro problema para conexão remota com o SQL Server 2000 e conseguimos resolver instalando o Service Pack 4. Neste último problema por algum motivo o servidor não estava escutando na porta 1433 no IP não-local. Fizemos a instalação do Service Pack 4 e o SQL Server passou a escutar a porta normalmente e as conexões passaram a funcionar.