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

我试图测试与本地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) 

有任何想法吗?

谢谢

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

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

最近经历了这个我用来解决几乎相同问题的步骤

  1. 使用SQL Server Management Studio使用所需帐户登录并确认读取权限(必要时写入)
  2. 使用SQL Server配置管理器确认服务器实例正在侦听要定位的IP地址
  3. 禁用防火墙以检查是否没有妨碍(并在必要时添加例外以备将来使用)

我的绝对踢球者是了解实例设置为侦听的IP地址和端口,以便在构建连接字符串时连接没有被拒绝。

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

由于您收到此错误,Sql服务器正确侦听该端口。

  1. 打开Sql Server Management Studio连接到您的服务器。
  2. 右键单击服务器的图标,然后选择属性。
  3. 转到安全选项卡,然后选中Sql Server和Windows身份validation模式。

如果要定义用户,请从树中选择Security-> Logins,右键单击logins文件夹,然后单击“新建登录”。

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

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

你必须通过在Eclipse或命令行中的VM参数下添加它来添加sqljdbc_auth.dll的路径,如果你从shell运行:-Djava.library.path =“\ MS SQL Server JDBC Driver 3.0 \ sqljdbc_3.0 \ enu \权威性\ X86″

如果您运行的是32位Windows,那就是这样。 否则最后的子目段会相应更改。

我认为这可能是一个更好的答案,设置基于SQL Server用户的身份validation: 将SQL Server 2008连接到Java:用户错误登录失败

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