4年后突然出现unixODBC][FreeTDS][SQL Server]无法连接数据源的错误

问题描述 投票:0回答:1

在过去四年中,我们一直在从共享 Linux 主机到 MS SQL 数据库建立 ODBC 连接,并且运行良好。上周末突然停了。不幸的是,这是有史以来最糟糕的时机。

我们正在使用 freeTDS 进行 odbc 连接,并且我们已将 TDS 版本更新为 auto,因为我们一直在使用 8.0,而且我知道版本号已更改。我们正在使用用户级 .odbc.ini 并尝试了我们能想到的所有变体,但仍然收到此错误:

[unixODBC][FreeTDS][SQL Server]无法连接到数据源

[myredactedDNSname]
Driver = /usr/lib64/libtdsodbc.so
Server = [redacted]
Port = [not 1433, a special port]
TDS Version = auto
Database = [my db name]

连接字符串采用 PHP 格式,并且是

$conn = new PDO("odbc:myredactedDNSname", $username, $password)

服务器正在运行 freetds v1.4.16(如果重要的话还可以是 PHP 8x)。

  • 我们尝试过auto、7.1、7.3、7.4版本
  • 我们知道它正在查找 DNS 名称,因为如果我故意输错它, 错误发生变化。
  • 我们知道它正在查找驱动程序,因为如果我使用 /usr/lib64/libtdsodbc.something 代替,它会给出驱动程序未找到错误。
  • 我们有服务器技术人员运行 tsql 测试,因为它位于我无权访问的服务器的一部分上,但我们还没有任何结果。 他们不是很有帮助。
  • 我们能够使用标准 Windows ODBC 连接到该服务器,因此它不是端口/用户/密码。 无论如何,它甚至无法连接到尝试用户/密码。

关于我还应该尝试什么的任何想法?

odbc freetds
1个回答
0
投票

我找到了答案,它根本没有意义,但它有效。

我只是[在阳光下测试了 20 个小时之后]必须在我的 .odbc.ini 中使用它:

TDS_版本 = 7.0

我们之前将其设置为 8.0 并期望“自动”能够工作,但在我们的共享服务器上使用版本 freetds v1.4.16 时,它却不起作用。

我们正在连接到 SQLserver 2016,因此 7.0 不应该是有效的 TDS_version,但它确实有效。

© www.soinside.com 2019 - 2024. All rights reserved.