SpringLearner
SpringLearner

Reputation: 13854

Can not connect to ms sql server using windows authentication on remote system

I was trying to connect to ms sql server 2008 which is installed on a remote system.But it showing error.The following is the way i had tried

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();  
        }  
    }  
}  

This is the error i am getting

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)

Any solutions for this problem

Upvotes: 1

Views: 6645

Answers (4)

G.Nader
G.Nader

Reputation: 857

-first enable your sql server to receive tcp connection from configuration manager. -add sqljdbc library to project. - add the .dll file of the library as vm argument ex: -Djava.library.path=...... -use the code below as example:

 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++;

     }

Upvotes: 0

jdev
jdev

Reputation: 5632

Is the 2008 SQL instance configured to be listening for TCP connections?

Start, Microsoft SQL Server 2008, Configuration Tools, SQL Server Configuration Manager SQL Server Network Configuration
Protocols for [instance name]
There should be four items listed:

  • Shared Memory
  • Named Pipes
  • TCP/IP
  • VIA

For your environment, which should be enabled and which should be disabled? Most setups call for Shared Memory and TCP/IP enabled, the others disabled.

Upvotes: 1

sunysen
sunysen

Reputation: 2361

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();  
        }  
    }  
}  

Then you look at this post:

JDBC: Simple MSSql connection example not working

Upvotes: 0

cdoubleplusgood
cdoubleplusgood

Reputation: 1369

Try to connect from the command line:

sqlcmd -S 192.168.1.220 -E

Also, check this:

  • Is the server firewall configured (allow port 1433 or sqlservr.exe);
  • Is your instance name correct? If you are using SQL Server express, the server name would be 192.168.1.220\sqlexpress;
  • Are TCP connections enabled for the server (see answer from jdev);
  • Are remote connections enabled for the server (can be changed in SQL Server Management Studio, Server properties, Connections);
  • Is port 1433 correct? By default, only unnamed instances use static port 1433. Other instances use a dynamic port and require SQL Server Browser for discovery.

Upvotes: 0

Related Questions