【发布时间】:2023-03-21 21:10:01
【问题描述】:
我们有一个通过 Tomcat 在 Windows 上运行的 Java servlet,最近一次 SQL 服务器数据库迁移导致的问题到目前为止已通过将 sqljdbc 升级到 sqljdbc4.jar 得到解决。这在 32 位操作系统上运行良好,但在 64 位服务器上似乎仍然挂起和超时。日志中最重要的错误消息是;
org.hibernate.exception.GenericJDBCException: Cannot open connection
此驱动程序有 64 位版本吗?到目前为止,我还没有找到一个。还有什么我配置错了吗?
【问题讨论】:
-
您的设置是否尝试使用 Windows 身份验证 (
integratedSecurity=true) 或 XA Transactions?没有 32 位和 64 位 .jar 文件,但有 32 位和 64 位版本的 .dll 文件支持这两个功能。 -
@GordThompson 我必须使用 XA 事务,因为我们没有使用 Windows 身份验证。我们正在使用专用的用户凭据。我还需要身份验证 dll 吗?我找到了这个关于 XA 身份验证的 URL,这是正确的吗? sqlserverfinebuild.codeplex.com/…
-
@GordThompson 我对此有点困惑,因为我们已经设法让连接在开发机器上工作而无需调整授权 dll。与问题服务器的唯一区别是它在我们的网络之外??
-
那么我怀疑服务器的“位数”可能不是问题。我将首先验证 Java 服务器是否可以使用更直接的方式(如 odbcad32.exe、osql 甚至 SSMS)与远程 SQL 服务器进行通信。一旦您确认(即排除防火墙问题、端口转发等)然后您就可以专注于您的 JDBC 配置。
-
@GordThompson。是的。我想我可以确认位数不是问题,因为发现它是 32 位版本的 JRE 正在服务器上运行。还刚刚找到了一种方法,我可以通过将 SQL Developer 配置为使用 sqljdbc4.jar 来检查连接,并显示以下消息“确保 SQL Server 实例正在主机上运行并在端口接受 TCP/IP 连接. 确保与端口的 TCP 连接未被防火墙阻止”。我将调查 odbcad32.exe,但我现在认为这是新 MSSQL 数据库服务器的网络基础设施问题
标签: java sql-server servlets jdbc