是否应该使用 FreeTDS 驱动程序而不是 MS SQL 驱动程序以实现旧 PHP 和较新 SQL 服务器之间的兼容性?

Should one use FreeTDS driver instead of MS SQL Driver for compatibility between older PHP and newer SQL Servers?

我正在努力将我的 Drupal (7.43) 应用程序(托管在 PHP 5.4 服务器上)连接到 Microsoft Azure SQL 数据库。

我真的很沮丧,甚至发现自己为了 why did you install this database on the newest version of SQL Server? 和我公司的 DBA 争论不休。

已编辑:

我问这个问题的原因是因为 Microsoft 官方文档说 不应该连接 到较新版本的 SQL 服务器 如果 PHP 服务器版本低于 7.*.

System Requirements for the Microsoft Drivers for PHP for SQL Server https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-ver15#driver-versions

根据这篇文章,如果PHP服务器版本是5.4,这样的php服务器的官方MS驱动是3.2版本。因此,如果SQL服务器驱动程序是3.2,则不应连接到高于2014的SQL服务器版本。

TL;博士;

我使用 FreeTDS 将 5.4 PHP 应用程序连接到 Azure SQL 服务器 !耶

FreeTDS is re-implementation of C libraries originally marketed by Sybase and Microsoft SQL Server. It allows many open source applications such as Perl and PHP (or your own C or C++ program) to connect to Sybase or Microsoft SQL Server.

我的操作系统是CentOS 7.

我为 http 服务器和 php 数据库连接安装了基本的 yum 包。

yum install httpd httpd-tools php php-common php-cli php-odbc php-pdo unixODBC unixODBC-devel

到目前为止我明白了:

好的,我安装了 FreeTDS:

yum install epel-release
yum check-update
yum install freetds freetds-devel

然后我有 /etc/freetds.conf:

[MYCLIENT]
  host = myclient.database.edtech.com
  port = 6669
  tds version = 8.0 # Btw, how important is this version for old PHP servers versus new SQL servers?

我也有/etc/odbcinst.ini

[FreeTDS]
Driver = /lib64/libtdsodbc.so.0
FileUsage = 1

此外,我有 /etc/odbc.ini:

[MSSQLServer]
Driver = FreeTDS # Yes, ODBC will use FreeTDS, I get it.
Description = MSSQL Server
Trace = Yes
Server = myclient.database.edtech.com
Port = 6669
TDS_Version = 7.1 # Shouldn't this be same as the version in /etc/freetds.conf?
Database = ApplicationDB

结论

你说

The reason why I asked that was because of Microsoft official documentation which says I cannot connect to newer versions of SQL Server if my PHP version is below 7.*.

Is this php 5.4 connection really supposed to work with newest SQL Server despite the official Microsoft docs say it should not?

...但实际上,Microsoft documentation you're talking about 并没有说您不能从 PHP 5.4 连接到 SQL 服务器。

他们说您不能(或者至少不支持您)通过 使用 PHP 的 SQL 服务器 [=24= 的 Microsoft 驱动程序来做到这一点] - 这是文档所谈论的特定产品。

FreeTDS 是一个不同的驱动程序。通过替换驱动程序,您已经替换了 Microsoft 所说的您不应该使用的东西。 AFAIK Microsoft 与 FreeTDS 没有任何关系,所以他们支持什么,以及他们的驱动程序使用什么,完全取决于他们。