1

我试图连接到安装在远程系统上的 ms sql server 2008。但它显示错误。以下是我尝试过的方式

import java.io.File;
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;
import java.sql.ResultSet;  
import java.sql.Statement;  


public class mssql {  
    public static void main(String[] args) {  
        try {  
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

            Connection connection=DriverManager.getConnection("jdbc:sqlserver://192.168.1.220:1433;databaseName=sales;integratedSecurity=true;");
            if(!(connection==null))
            {
                System.out.println("connected");
            }

//            


        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

这是我得到的错误

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host 192.168.1.220, port 1433 has failed. Error: "connect timed out. Verify the connection properties. 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:190)
    at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
    at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
    at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at mssql.main(mssql.java:14)

这个问题的任何解决方案

4

4 回答 4

1

2008 SQL 实例是否配置为listening用于TCP连接?

Start, Microsoft SQL Server 2008, Configuration Tools, SQL Server Configuration Manager SQL Server Network Configuration
Protocols for [ instance name ]
应该列出四项:

  • 共享内存
  • 命名管道
  • TCP/IP
  • 通过

对于您的环境,哪些应该启用,哪些应该禁用?大多数设置要求启用共享内存和 TCP/IP,其他设置则禁用。

于 2013-09-23T12:15:15.720 回答
0

-首先使您的 sql 服务器能够从配置管理器接收 tcp 连接。- 将 sqljdbc 库添加到项目中。- 添加库的 .dll 文件作为 vm 参数 ex: -Djava.library.path=...... - 使用下面的代码作为示例:

 String connectionUrl = "jdbc:sqlserver://localhost;" +
     "databaseName=Timesheet;integratedSecurity=true;";
    Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     con = DriverManager.getConnection(connectionUrl);


     String SQL = "select top 100 * from paycal";
     stmt = con.createStatement();
     rs = stmt.executeQuery(SQL);
     int i =0;

     while (rs.next()) {

        jTable1.setValueAt(rs.getString("dayname"), i, 0);
        jTable1.setValueAt(rs.getString("dater"), i, 1);
        i++;

     }
于 2014-01-13T11:50:59.610 回答
0
public class mssql {  
    public static void main(String[] args) {  
        try {  
            //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); modify
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

            Connection connection=DriverManager.getConnection("jdbc:sqlserver://192.168.1.220:1433;databaseName=sales;integratedSecurity=true;");
            if(!(connection==null))
            {
                System.out.println("connected");
            }

//            


        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

那你看看这个帖子:</p>

JDBC:简单的 MSSql 连接示例不起作用

于 2013-09-23T12:17:08.227 回答
0

尝试从命令行连接:

sqlcmd -S 192.168.1.220 -E

另外,请检查:

  • 是否配置了服务器防火墙(允许端口 1433 或 sqlservr.exe);
  • 您的实例名称是否正确?如果您使用 SQL Server express,则服务器名称为 192.168.1.220\sqlexpress;
  • 是否为服务器启用了 TCP 连接(请参阅 jdev 的回答);
  • 是否为服务器启用了远程连接(可以在 SQL Server Management Studio、服务器属性、连接中更改);
  • 端口 1433 是否正确?默认情况下,只有未命名的实例使用静态端口 1433。其他实例使用动态端口并需要 SQL Server Browser 才能发现。
于 2013-09-23T12:29:31.270 回答