2013-02-18 10 views
7

Próbuję połączyć się z SQL Server 2008 przez Javę.Otrzymywanie wyjątku SQLException "Logowanie nie powiodło się dla użytkownika" Połączenie z SQL Server 2008

  1. Dodałem sqljdbc4.jar do biblioteki mojego projektu.
  2. Brak nazwy użytkownika i hasła dla bazy danych uzyskującej dostęp do bazy danych (Uwierzytelnianie systemu Windows).
  3. Port 1433 jest słuchanie, ale nadal otrzymywać ten wyjątek:

SQL wyjątek: com.microsoft.sqlserver.jdbc.SQLServerException: Logowanie nie powiodło się dla użytkownika ''. ClientConnectionId: 085d5df3-ad69-49e1-ba32-b2b990c16a69

odpowiedni kod:

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

Odpowiedz

15

Jeśli chcesz uwierzytelniania systemu windows trzeba dodać opcję integratedSecurity=true do adresu URL JDBC:

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

Potrzebujesz również sqljdbc_auth.dll (uwaga na 32/64 bit) w ścieżce systemu Windows lub w katalogu określonym przez java.library.path

Szczegółowe informacje patrz podręcznik kierowcy: http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated

+0

Gdzie pobrać "sqljdbc_auth.dll", zobacz [odpowiedź] (http://stackoverflow.com/a/19116116/2646526). – heenenee

1

Miałem ten sam problem, gdy próbowałem połączyć się z serwerem Microsoft SQL z Java. Użyłem sterownika jTDS zamiast zwykłego sterownika 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

Miałem ten sam problem. Jest to spowodowane niewłaściwym formatem ConnectionUrl. Brakuje nazwy użytkownika i hasła w narzędziu ConnectionUrl.

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

Mam nadzieję, że działa dobrze !!!

Powiązane problemy