jdbc.SQLServerException:任何用户的用户登录失败

时间:2012-10-07 13:16:40

标签: java sql sql-server sql-server-2008

我尝试测试与本地sql DB的连接。我有这段代码:

try{
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=SocialFamilyTree;user=SOSCOMP");

}catch(Exception e){
    System.out.println("Couldn't get database connection.");
    e.printStackTrace();
}

我尝试了很多用户。我的Windows用户是SOSCOMP,没有密码。我也知道SQL 2008创建用户为“sys”“dbo”,我也试过这些。我总是得到:

Couldn't get database connection.
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'SOSCOMP'.

    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2532)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1929)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1917)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1061)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:243)
    at FT_Receiver.FT_Receiver.main(FT_Receiver.java:12)

有什么想法吗?

由于

5 个答案:

答案 0 :(得分:16)

如果您尝试连接使用Windows身份验证的数据库,则可以在连接字符串中使用“integratedSecurity”选项。

DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=SocialFamilyTree;integratedSecurity=true;");

答案 1 :(得分:8)

最近我已经完成了解决几乎相同问题的步骤

  1. 使用SQL Server Management Studio使用所需帐户登录并确认读取权限(并在必要时写入)
  2. 使用SQL Server配置管理器确认服务器实例正在侦听要定位的IP地址
  3. 禁用防火墙以检查是否妨碍(并在必要时添加例外以备将来使用)
  4. 我的绝对踢球者是了解实例设置为侦听的IP地址和端口,以便在构建连接字符串时连接没有被拒绝。

    此外,如果要使用Windows登录进行连接,则需要确保为混合模式身份验证配置SQL实例(即允许Windows和SQL登录)

答案 2 :(得分:3)

由于您收到此错误,因此Sql server正确侦听该端口。

  1. 打开Sql Server Management Studio连接到您的服务器。
  2. 右键单击服务器的图标,然后选择属性。
  3. 转到安全选项卡,然后勾选Sql Server和Windows 身份验证模式。
  4. 如果要定义用户,请从树中转到Security->登录,右键单击登录文件夹,然后单击“新登录”。

    现在您的服务器应该使用此Url字符串。 使用可帮助您了解其工作情况的服务器日志文件。

答案 3 :(得分:1)

回复:没错。仍然警告:无法加载sqljdbc_auth.dll原因: - java.library.path中没有sqljdbc_auth - Mike 10月7日14:03

如果从shell运行,则必须通过在Eclipse或命令行中的VM参数下添加此路径来添加sqljdbc_auth.dll的路径:  -Djava.library.path =“\ MS SQL Server JDBC Driver 3.0 \ sqljdbc_3.0 \ enu \ auth \ x86”

如果你正在运行32位Windows,那就是。否则最后的子目录会相应改变。

我认为这可能是一个更好的答案,设置基于SQL Server用户的身份验证: Connecting SQL Server 2008 to Java: Login failed for user error

(我试着在这里总结一下:http://silveira.wikidot.com/sql-server

答案 4 :(得分:0)

我也遇到了同样的问题,就我而言,以下内容配置错误

  1. 我的系统中正在运行两个 SQL(版本)服务器 --> Sol:请自行检查我们指向的是哪个服务器。
  2. 端口被配置为动态 --> Sol:我们应该设置端口 1433,动态端口应该是 0,如果我们连接到特定端口。
  3. 在创建新登录名(用户)时,我选择了“首次登录后更改密码”选项--> Sol:如果我们尝试从其他服务进行连接,则在创建新登录名时不应选择此选项,例如开火。