【问题标题】:Do I require a 64-bit version of sqljdbc4.jar我需要 64 位版本的 sqljdbc4.jar
【发布时间】: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


【解决方案1】:

通常 jar 文件是平台无关的。包含类文件的 jar 可以在 32 位和 64 位 JVM 上使用。

您的问题可能是您仍然需要合适的 JDBC 驱动程序。见http://technet.microsoft.com/en-us/library/ms378422%28v=sql.110%29.aspx

它表明您需要安装sqljdbc_<version>_enu.exe。我猜第 3 版和第 4 版之间存在差异。

【讨论】:

  • 感谢您的快速回复。是的,我不认为有 32 位和 64 位的罐子。我有驱动程序版本 sqljdbc_4.0.2206.100_enu.exe 虽然说明说要在它真正解压缩时安装。我对 sqljdbc exe 文件做错了什么吗?我从这里下载的; microsoft.com/en-gb/download/confirmation.aspx?id=11774
猜你喜欢
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多