2013-02-18 149 views
7

我試圖通過Java連接到SQL Server 2008。接收SQLException連接到SQL Server 2008的「用戶登錄失敗」

  1. 我已將sqljdbc4.jar添加到我的項目庫中。
  2. 沒有爲訪問數據庫的數據庫設置用戶名和密碼(Windows身份驗證)。
  3. 1433端口在偵聽,但我仍然收到此異常:

SQL異常:com.microsoft.sqlserver.jdbc.SQLServerException:用戶登錄失敗'。 ClientConnectionId:085d5df3-ad69-49e1-ba32-b2b990c16a69

相關代碼:

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

回答

15

如果你想讓Windows身份驗證,您需要將選項integratedSecurity=true添加到您的JDBC URL:

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

您還需要sqljdbc_auth.dll(注意32/64位)在您的Windows系統路徑或通過java.library.path

有關詳情請參閱駕駛員手冊:http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated

+0

要下載'sqljdbc_auth.dll',請參閱[本答案](http://stackoverflow.com/a/19116116/2646526)。 – heenenee 2017-03-16 17:06:14

1

我在嘗試從Java連接到Microsoft SQL Server時遇到了同樣的問題。我用jTDS驅動程序代替了常規的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

我有同樣的問題。這是因爲ConnectionUrl格式錯誤。您在ConnectionUrl中缺少用戶名和密碼。

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

我希望它運作良好!!!

相關問題