连接到SQL Server时失败:“驱动程序收到意外的登录前响应”

时间:2019-04-16 15:06:39

标签: sql-server hibernate

我有一个Web应用程序,该应用程序与Windows Service一起使用Hibernate连接到MS SQL Server 2017。在以前的情况下,该连接已经过测试和正确执行,也就是说,驱动程序和服务器之间的兼容性很好。尽管如此,我在与新的远程SQL Server建立特定连接时遇到了麻烦(注意:远程SQL连接过去已经成功完成)。

因此,此远程SQL Server 2017位于云服务器中。在我的PC中,我有运行测试过的Web应用程序的NetBeans。在另一台服务器中,但在同一网络中,我安装了Windows服务。

使用Windows服务,我可以连接到云中的服务器。如果我在云服务器内部运行它,它也将连接到它。我还可以使用Microsoft SQL Management Studio从云服务器内部以及从我的PC连接到它。换句话说,我完全能够连接到服务器,因此我拥有正确的连接信息。

这里唯一的例外是我的Web应用程序;它只是无法连接。并且,如果这样做失败,则会引发以下错误消息:“驱动程序收到了意外的登录前响应。请验证连接属性,并检查主机上是否正在运行SQL Server实例,并在主机上接受TCP / IP连接。端口。此驱动程序只能与SQL Server 2005或更高版本一起使用。“

这是Hibernate配置(请记住:我以前能够连接到远程SQL 2017服务器):

<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://ip.goes.here\MARTIN2:1521;databaseName=DATABASENAMEHERE</property>
<property name="hibernate.connection.username">login</property>
<property name="hibernate.connection.password">password</property>

由于发生了此问题,我在上面的代码中尝试了许多其他可能的配置组合,但都没有成功。

那为什么会这样呢?唯一可以解释的额外信息是,在同一台云服务器中,还安装了另一台Oracle服务器。不过,我不认为这是问题所在,因为正如我提到的,MS Studio和Windows服务都可以毫无问题地进行连接。驱动程序是mssql-jdbc-7.0.0.jre8.jar。此Web应用程序可以很好地连接到安装在网络中另一台计算机上的另一台SQL Server(测试Windows服务connectin时,与上述服务器相同),再次证明驱动程序兼容性很好。

1 个答案:

答案 0 :(得分:0)

我设法找到了问题的答案。

首先,我需要取出端口信息。看来SQL Server的安装有些问题,因此未使用默认的1433端口,但我仍然不知道其他端口。因此,删除使用1433的特定呼叫解决了连接错误。 (注意:在上面的代码中,我使用1521,因为同一台计算机上的Oracle服务器正在使用该端口,并且以前我错误地使用了同一端口;直到后来我才注意到这是我的错误。)