4

我正在尝试连接到使用 SQL Server 2012 创建的数据库,但我不断收到错误消息。这是连接的代码:

Driver d = (Driver)Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
        String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=Tema6;user=sa;password=123456";
        java.sql.Connection con = DriverManager.getConnection(DB_URL);

这是我得到的错误:

Login failed for user 'sa'. ClientConnectionId:e6335e64-ca68-4d72-8939-5b7ded951424

我已从 SQL Server Config 启用 TCP/IP 协议,我确信“sa”帐户已启用并且密码正确。任何人都可以帮助我吗?

编辑:这是整个堆栈跟踪。

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'sa'. ClientConnectionId:e6335e64-ca68-4d72-8939-5b7ded951424
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Connection.main(Connection.java:12)

EDIT2:用jTDS替换驱动程序后:

java.sql.SQLException: Login failed for user 'sa'.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2893)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2335)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:609)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:369)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Connection.main(Connection.java:19)
4

6 回答 6

5

我不认为这是驱动程序问题,因为该消息表明它已尝试并且身份验证失败,因此至少设法连接。

我要问的第一个(基本)问题是您是否确定“123456”是 sa 帐户的正确密码?通过以“sa”身份使用 SQL Server Management Studio 登录来测试它。

接下来,我将尝试在 SQL Server 中创建一个用户并在连接字符串中提供这些凭据(如 Brandon 所建议的那样)

接下来(为了好玩)我将启用混合模式身份验证并尝试在连接字符串中使用我的 Windows 用户帐户凭据。

这些是我过去为在 SQL Server 中配置网络而编写的一些说明。绝对值得仔细检查设置:

配置 SQL Server 网络
开箱即用,SQL Server 2008 Express 不支持固定端口上的 TCP 连接。要解决此问题:从 Windows 开始菜单打开“SQL Server 配置管理器”在“SQL Server 网络配置”->“SQLEXPRESS 的协议”下打开 TCP/IP 属性在“协议”选项卡上设置为“在选项卡上启用”“ IP 地址”滚动到底部 在“IP All”下将 TCP 端口更改为 1433 确保 TCP 动态端口为空,删除零单击应用

在 SQL Server Management Studio 中检查:从服务器实例右键单击并选择属性在安全选项下:确保选中“SQL Server 和 Windows 身份验证模式”

于 2013-06-01T23:18:55.023 回答
3

单击 SQL --> 单击鼠标右键 --> propretise --> Securiti --> 勾选 SQL server and windows Authentication mode

90% 成功!

于 2014-10-29T03:33:14.340 回答
1

我还没有真正检查过您的堆栈跟踪,但是人们忘记允许远程连接到服务器是很常见的。尝试右键单击服务器实例(对象资源管理器)> 属性 > 连接并选中允许远程连接到此服务器

于 2013-06-01T23:06:56.693 回答
1

此数据库 url 格式错误

String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=Tema6;user=sa;password=123456";

而不是这个试试这个

Connection connection = DriverManager
                .getConnection("jdbc:sqlserver://localhost:1433;\\SQLEXPRESS;databaseName=Tema6","sa","123456");
于 2014-06-20T04:49:15.927 回答
1

检查配置 sql server 的端口。如果端口配置为“动态端口”并且您尝试在默认端口上连接,则会收到此奇怪的错误。

您可以通过尝试通过 sqlserver 客户端连接到 sql server 来检查这是否是问题所在。

  1. 将认证方式设置为“sql server 认证”
  2. 在服务器字段中输入服务器名称和端口,格式为“服务器名称,端口”
  3. 输入用户名和密码,点击连接

如果连接不成功并且您收到确切的错误消息“用户 xxx 登录失败”,那么这就是问题所在

https://msdn.microsoft.com/en-IN/library/ms177440.aspx

于 2016-04-07T08:02:13.510 回答
-1

转到 sql server,选择用户属性并将服务器角色更改为 sysadmin 解决了这个问题。

于 2017-11-14T05:06:41.787 回答