SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746 意思是在连接 SQL Server 数据库时出现了错误。具体而言,TCP 提供程序返回了错误代码0x2746。

3
我正在Ubuntu 20.04上使用PHP Laravel 7.4,试图从位于另一台云上的Windows服务器上的SQL Server中获取数据。
在我的PC(Windows)上测试了此方法,并成功地从上述Windows服务器获取了数据。但是,在我的Ubuntu服务器上,我按照文档ubuntu 20.04 PHP 7.4 https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15 进行操作时,出现了以下错误:
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连接请求失败。”
3个回答

5

请尝试以下步骤:

  1. 安装sqsrv和pdo_sqlsrv扩展并重新启动apache

  2. config/database.php的sqlsrv数组中更新并注释下面提到的行

    'port' => env('DB_PORT', '1433'),

sqlsrv驱动程序的最终值将如下所示:

'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            // 'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],
  • 在项目目录的命令行中输入以下两个命令

      composer dump-autoload
    
      php artisan config:clear
    

  • 2

    0

    我认为我在使用 Laravel 时遇到了类似的 mssql 错误。我通过在机器上安装和启用 mssql php 扩展来解决它。也许这能帮到你。


    我按照你上面提到的方法操作了,但仍然遇到相同的错误。然而,我在 MSSQL 中检查了日志,并注意到每次从 Ubuntu 发出请求时都会出现此消息:“远程客户端应用程序收到了一个 TLS 1.2 连接请求,但客户端应用程序支持的密码套件均不受服务器支持。SSL 连接请求失败。” - naif basalib

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接