SQLServerException:与主机localhost,端口1433的TCP / IP连接失败。

时间:2017-12-05 21:58:48

标签: sql-server ubuntu

我正在运行Ubuntu 16.04并使用SQL Server Express和Oracle Java 9:

$ java --version
java 9.0.1
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

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

中安装了SQL Server jdbc驱动程序(sqljdbc_6.2.2.0_enu.tar.gz
/home/t/program_files/RDBMS/JDBC/mssqlserverjdbc_6.0/enu/jre8/sqljdbc42.jar

我写了一些简单的代码来测试使用驱动程序:

// JDBC driver name and database URL                                                                                                                                       
String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// static final String DB_URL = "jdbc:mysql://localhost/"; // connect to a DBMS                                                                                            
String DB_URL = "jdbc:microsoft:sqlserver://localhost/STUDENTS"; // connect to a specific database in a DBMS                                                               
//  Database credentials                                                                                                                                                   
String USER = "SA";
String PASS = "password";

//Register JDBC driver                                                                                                                                                     
try{
    Class.forName(JDBC_DRIVER);
}catch(Exception e){ //Handle errors for Class.forName                                                                                                                     
    e.printStackTrace();
}

    //Open a connection                                                                                                                                                    
System.out.println("Connecting to database...");

try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); // connect to DBMS, not to a DB                                                                     
    Statement st = conn.createStatement()){

}catch(SQLException se){ //Handle errors for JDBC                                                                                                                          
    se.printStackTrace();
}

编译很好:

$ javac BasicOperations.java

跑步不是。

$ java -cp .:/home/t/program_files/RDBMS/JDBC/mssqlserverjdbc_6.0/enu/jre8/sqljdbc42.jar BasicOperations
Connecting to database...
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost/STUDENTS, port 1433 has failed. Error: "localhost/STUDENTS. Verify the connection pro\
perties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked \
by a firewall.".
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)
        at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242)
        at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2369)
        at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:551)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1963)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
        at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
        at BasicOperations.main(BasicOperations.java:46)

我该如何解决这个问题?我应该在Ubuntu上与https://stackoverflow.com/a/12430561/1224441等效吗? 因为我在Ubuntu上使用SQL Server Express,所以我只知道如何使用sqlcmd在终端上访问它。

感谢。

0 个答案:

没有答案