SQLSTATE[08001]: [Microsoft][SQL Server 的 ODBC 驱动程序 17]TCP 提供程序: 错误代码 0x2746

SQLSTATE[08001]: [Microsoft][SQL Server 的 ODBC 驱动程序 17]TCP 提供程序: 错误代码 0x2746

我在 Ubuntu 20.04 上使用 PHP Laravel 7.4,并尝试从位于另一个云中的 Windows 服务器上的 SQL Server 获取数据。

此方法已在我的 PC(Windows)上进行了测试,并成功从 Windows 服务器检索了数据。但是,在我的 Ubuntu 服务器上,我遵循Microsoft 的文档并收到此错误:

SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]
TCP Provider: Error code 0x2746 (SQL: myquery) 
{"userId":94,"exception":"[object] 
(Illuminate\Database\QueryException(code: 08001): SQLSTATE[08001]: 
[Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 
0x2746 (SQL: myquery) at /var/www/web-api/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669)

我检查了 Microsoft SQL Server Management Studio 中的日志,发现每次我从 Ubuntu 发出请求时都会出现此消息

“从远程客户端应用程序收到 TLS 1.2 连接请求,但服务器不支持客户端应用程序支持的任何密码套件。 SSL 连接请求失败。”

我怎样才能解决这个问题?

答案1

当 ODBC 连接到 SQL Server 数据库失败时,会发生错误08001。您提到了两件引人注目的事情:

  1. 这适用于您的本地开发机器
  2. SQL Server 实例可能正在另一个云提供商上运行

由于连接是从本地计算机进行的,因此用户名/密码可能是正确的,但您需要检查一下。不过,最有可能的罪魁祸首是防火墙。确认 Ubuntu 服务器的 IP 地址是否允许通过运行 SQL Server 的 Windows 服务器的防火墙。

需要提供以下端口:

TCP:1433, 4022, 135, 1434
UDP:1434

相关内容