2013-02-18 23 views
7

Sto tentando di connettersi a SQL Server 2008 tramite Java.Ricezione di SQLException "Accesso non riuscito per l'utente" connessione a SQL Server 2008

  1. Ho aggiunto sqljdbc4.jar alla libreria del mio progetto.
  2. Nessun nome utente e password sono impostati per l'accesso al database del database (Autenticazione di Windows).
  3. La porta 1433 è in ascolto, ma ho ancora ricevere questa eccezione:

SQL Eccezione: com.microsoft.sqlserver.jdbc.SQLServerException: Accesso non riuscito per l'utente ''. ClientConnectionId: 085d5df3-ad69-49e1-ba32-b2b990c16a69

codice rilevante:

public class DataBases 
{ 

    private Connection link; 
    private java.sql.Statement stmt; 
    public ResultSet rs; 

    public DataBases() 
    { 
     try 
     {  
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
      String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=DB;"; 
      Connection con = DriverManager.getConnection(connectionUrl); 
     } 
     catch (SQLException e) 
     { 
      System.out.println("SQL Exception: "+ e.toString()); 
     } 
     catch (ClassNotFoundException cE) 
     { 
      System.out.println("Class Not Found Exception: "+ cE.toString()); 
     } 
    } 
} 

risposta

15

Se si desidera l'autenticazione di Windows è necessario aggiungere l'opzione integratedSecurity=true al tuo URL JDBC:

 
jdbc:sqlserver://localhost:1433;databaseName=DB;integratedSecurity=true 

È inoltre necessario sqljdbc_auth.dll (fare attenzione a 32/64 bit) nel percorso di sistema di Windows o in una directory definita tramite java.library.path

Per i dettagli si veda il manuale del conducente: http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated

+0

Per dove scaricare 'sqljdbc_auth.dll', vedere [questa risposta] (http://stackoverflow.com/a/19116116/2646526). – heenenee

1

Avevo lo stesso problema quando ho provato a connettermi al server Microsoft SQL da Java. Ho usato il driver jTDS invece del normale driver SQLJdbdc.

 Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
     String connectionUrl = "jdbc:jtds:sqlserver://localhost:1433;databaseName=DB;integratedSecurity=true"; 
     Connection con = DriverManager.getConnection(connectionUrl); 
0

Ho avuto lo stesso problema. È a causa del formato errato di ConnectionUrl. Mancano nome utente e password in ConnectionUrl.

String ConnectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=DB","username","password");" 

Spero che funzioni bene !!!