6

我正在尝试通过 Java 连接到 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());
        }
     }
}
4

4 回答 4

17

如果您想要 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

于 2013-02-18T21:00:44.283 回答
1

当我尝试从 Java 连接到 Microsoft SQL 服务器时,我遇到了同样的问题。我使用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);
于 2013-02-18T21:20:45.370 回答
1

我遇到过同样的问题。这是因为 ConnectionUrl 的格式错误。您在 ConnectionUrl 中缺少用户名和密码。

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

我希望它运作良好!!!

于 2013-06-21T05:41:42.683 回答
0

这篇文章是我的帮助: jdbc.SQLServerException: Login failed for user for any user

您需要该integratedSecurity=true标志并确保服务器属性确实设置为“安全”下的“Windows 身份验证模式”。

于 2013-02-18T21:03:50.530 回答