我正在尝试连接到使用 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 配置启用 TCP/IP 协议,我确信“sa”帐户已启用且密码正确。有人可以帮我吗?
EDIT:这是整个堆栈跟踪。
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)
我不认为这是驱动程序问题,因为该消息表明它已尝试进行身份验证但失败,因此至少能够连接。
我要问的第一(基本)问题是您是否确定“123456”是 sa 帐户的正确密码?通过使用 SQL Server Management Studio 以“sa”身份登录来测试它。
接下来,我尝试在 SQL Server 中创建一个用户,并在连接字符串中提供这些凭据(按照 Brandon 的建议)
接下来(为了好玩)我将启用混合模式身份验证并尝试在连接字符串中使用我的 Windows 用户帐户凭据。
这些是我过去为在 SQL Server 中配置网络而编写的一些说明。绝对值得仔细检查设置:
配置 SQL Server 网络
SQL Server 2008 Express 开箱即用,不支持固定端口上的 TCP 连接。要解决这个问题:
从 Windows 开始菜单中打开“SQL Server 配置管理器”
在“SQL Server 网络配置”-->“SQLEXPRESS 协议”下
打开 TCP/IP 属性
在“协议”选项卡上
将启用设置为 YES
在“IP 地址”选项卡上滚动到底部
在“IP全部”下
将 TCP 端口更改为 1433
确保 TCP 动态端口为空,删除零
点击应用
在 SQL Server Management Studio 中检查:
从服务器实例右键单击并选择属性
在安全选项下:确保选中“SQL Server 和 Windows 身份验证模式”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)