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



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

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

使用 Windows 服务,我可以连接到云中的服务器。如果我在云服务器内部运行它,它也会连接到它。我还能够使用 SQL Management Studio Microsoft从云服务器内部和我的 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.hereMARTIN2: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 服务连接的位置相同),再次证明驱动程序兼容性很好。

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

首先,我需要取出端口信息。SQL服务器的安装似乎有些错误,因此没有使用默认的1433端口,而是其他一些我还不知道的端口。因此,删除使用 1433 的特定调用解决了连接错误。(注意:在上面的代码中,我使用1521,因为同一台机器中的Oracle服务器正在使用这个端口,我以前错误地使用相同的端口;只是后来我注意到这是我的错误)。

最新更新