java - 连接到 SQL Server 导致错误 "The driver received an unexpected pre-login response"

标签 java sql-server jdbc sql-server-2000

我无法连接到 SQL Server,出现以下错误。

异常 com.microsoft.sqlserver.jdbc.SQLServerException: TCP/IP 连接 到主机 SSALES,端口 1433 发生故障。错误:“驱动程序收到一个 unexpe cted 登录前响应。验证连接属性并检查安装是否正确 SQL Server 正在主机上运行并接受 TCP/IP 连接 电子端口。该驱动程序只能与 SQL Server 2000 或更高版本一起使用。”。

我本地的环境:-

Java 5, SQL Server企业管理器版本8,

RunApp.java

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
conn = java.sql.DriverManager.getConnection("jdbc:sqlserver://abc;d‌​atabaseName={db};use‌​r=name;password=pass‌​worf;");
Statement stmt=conn.createStatement();  
ResultSet rs=stmt.executeQuery("SELECT * FROM testdb.testtabel where active = 'a'");

通过cmd运行:

set path="C:\Program Files\Java\jdk5\bin";

javac -classpath "D:\Web Development\ABC\lib\mail-1.4.3.jar;D:\Web Development\ABC\lib\json-simple.jar;D:\Web Development\ABC\lib\sqljdbc.jar;" com\test\RunApp.java

java -classpath "D:\Web Development\ABC\lib\mail-1.4.3.jar;D:\Web Development\ABC\lib\json-simple.jar;D:\Web Development\ABC\lib\sqljdbc.jar;" com.test.RunApp  

最佳答案

您的网址错误(请参阅 Building the Connection URL ),应该是(注意使用转义反斜杠而不是正斜杠):

"jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName={db};user=MyUserName;password=MyPassword;"

还要确保将 {db} 替换为数据库的实际名称。

您正在尝试通过实例名称进行连接,并且对错误消息进行一些谷歌搜索表明,如果实例名称错误或 SQL Server Browser 服务未运行,则可能会发生此错误。因此您需要启用 SQL Server Browser 服务(默认情况下禁用)。

否则,您需要从 URL 中删除实例名称,并在 JDBC URL 中指定正确的端口号(通常为 1433,但这可能取决于配置:仔细检查)。

关于java - 连接到 SQL Server 导致错误 "The driver received an unexpected pre-login response",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41609474/

相关文章:

java - JMS消息生产者和消费者事务管理

java - Android 内存不足错误?

java - 如何将 .so 文件打包到 jar 中?

java - 如何在 Android 中序列化位图

sql-server - 通过 Delphi DLL 连接到 SQL 时 Delphi 10.2 Tokyo 程序抛出 216 错误

sql - 我怎样才能 "flatten"输出我的 TSQL 结果?

sql-server - MS SQL Server - 安全并发使用全局临时表?

java - 使用值来触发 Jcombobox Action 监听器而不是 getselectedindex?

java - H2:如何判断表是否存在?

database - Python 3 - 与 JDBC 连接