Я обновился с Ubuntu 19.10 до 20.04, и все прошло хорошо, за исключением следующей проблемы, возможно, вызванной 20.04, требующим TLS 1.2 (?). Я обновил MS SQL до последнего пакета обновления, и в Центре обновления Майкрософт ничего не ожидается.
Я получаю следующие ошибки Schannel:
An TLS 1.2 connection request was received from a remote client application, but none of the cipher suites supported by the client application are supported by the server. The SSL connection request has failed.
и
The following fatal alert was generated: 40. The internal error state is 1205.
В средстве просмотра событий Windows. Экземпляр SQL Server, к которому я пытаюсь подключиться, имеет версию: 12.3.6024.0
<?php
$start = microtime(true);
setlocale(LC_MONETARY, 'en_GB');
date_default_timezone_set('Europe/London');
$serverName = "w2k8";
$connectionInfo = array(
"UID"=>"me",
"PWD"=>"mine",
"Encrypt" =>1,
"TraceFile"=>"/home/traceFile.txt",
"TraceOn"=>1,
"TrustServerCertificate"=>1
);
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
} else {
print_r(get_defined_vars());
}
вышеуказанные выходы:
> [0] => Array
> (
> [0] => 08001
> [SQLSTATE] => 08001
> [1] => 10054
> [code] => 10054
> [2] => [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746
> [message] => [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746
> )
>
> [1] => Array
> (
> [0] => 08001
> [SQLSTATE] => 08001
> [1] => 10054
> [code] => 10054
> [2] => [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection
> [message] => [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection
> )
Установлены следующие ключи реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server -> DisabledByDefault -> 0, Enabled -> 1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client -> DisabledByDefault -> 0, Enabled -> 1
Я не знаю, что могу сделать, чтобы решить эту проблему, но должен.