2013-02-18 151 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");" 

我希望它运作良好!!!

相关问题