Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Falha na conexão TCP/IP

Boa noite pessoal,

Estou me deparando com o seguinte erro:

Falha na conexão TCP/IP com o host ANDREW/BancoAlura, porta 1433. Erro: "null. Verifique as propriedades da conexão. Verifique se uma instância do SQL Server está sendo executada no host e se está aceitando conexões TCP/IP na porta. Verifique se as conexões TCP na porta não foram bloqueadas por um firewall.".

Alguem sabe me dizer como verificar ou configurar a conexão TCP/IP do SQL Server 2012 ? ou se meus drivers e connectionString estão corretos ?

Segue abaixo informações:

Microsoft SQL Server 2012
Server Type: Database Engine
Server name: ANDREW
Authentication: Windows Authentication
Drivers adicionados ao Path: 
    - sqljdbc.jar
    - sqljdbc4.jar
    - sqljdbc41.jar
package br.com.alura.lojavirtual.program;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestaConnection {
    public static void main(String[] args) {
        String url = "jdbc:sqlserver://ANDREW/BancoAlura;integratedSecurity=true";
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            System.out.println("Class.forName error");
            System.out.println(e.getMessage());
        }

        try {
            Connection connection = DriverManager.getConnection(url);
            Statement statement = connection.createStatement();
            boolean booleanResult = statement.execute("Select * from Produto");
            ResultSet resultSet = statement.getResultSet();
            while (resultSet.next()) {
                int id = resultSet.getInt("ID");
                String nome = resultSet.getString("Nome");
                String descricao = resultSet.getString("Descricao");

                System.out.println(id + " - " + nome + " - " + descricao);
            }

            resultSet.close();
            statement.close();
            connection.close();

        } catch (SQLException e) {
            System.out.println("Connection Error");
            System.out.println(e.getMessage());
        }
    }
}

Agradecido.

5 respostas

Observação:

Esse erro relatado ocorre no segundo try catch !!!

Acho que o problema é que ele nao esta achando um HOST que se chama ANDREW. Ele existe? Nao seria localhost?

String url = "jdbc:sqlserver://localhost/BancoAlura;integratedSecurity=true";

ou teste para ver se o Andrew está respondendo nessa porta via prompt do DOS:

telnet ANDREW 1433
solução!

Oi Andrew,

Verifique se a conexão TCP/IP no seu SQLServer está configurada corretamente. Aqui tem um tutorial ensinando como configurar: http://tdn.totvs.com/pages/releaseview.action?pageId=181142998

Outra coisa, troque sua String url para:

 String url = "jdbc:sqlserver://ANDREW;databaseName=BancoAlura;integratedSecurity=true";

Veja se com isso resolve o problema.

Abraços!

Olá !

Após muitas tentativas, pesquisa e ajuda de vocês é claro, funcionou !!!

Eu tive que mexer no sqlmgmproviderxpsp2up.mof para habilitar o SQL Manager para ai sim, configurar o protocolo TCP/IP.

Após isto, excluir todas os driver que botei no projeto, baixei o sqljdbc42.jar e adicionei ao projeto. Também adicionei diretamente como native library do driver o sqljdbc_auth.dll devido ao integratedSecurity.

Por fim, utilizei a seguinte url para conexão:

String url = "jdbc:sqlserver://ANDREW;databaseName=BancoAlura;integratedSecurity=true";

Mas uma dúvida ainda me assombra... porque a url com databaseName separado funcionou e a outra que estava utilizado não ?

Oi Andrew,

Que bom que resolveu :)

Pela documentação da Microsoft, o databaseName deve ser configurado via parâmetro mesmo, conforme eu havia citado.

https://msdn.microsoft.com/pt-br/library/ms378428(v=sql.110).aspx

Bons estudos!