Назад | Перейти на главную страницу

Протоколы удаленного клиента не включены, и в строке подключения не указан удаленный протокол.

Вот моя ситуация. Есть три сервера:

  1. Windows Server 2016 (Сервер-1)
  2. Windows Server 2016 (Сервер-2)
  3. Windows Server 2016 с SQL Server 2016 (Сервер-SQL)

У меня есть код C #, который подключается к Сервер-SQL который одинаков на обоих Сервер-1 и Сервер-2 с одинаковыми строками подключения.

Строка подключения выглядит примерно так:

Provider=MSOLEDBSQL;Server=Server-SQL;Database=database;Uid=user;Pwd=password;Encrypt=yes

Новый устаревший драйвер OLE DB 2018 установлен на обоих Сервер-1 и Сервер-2.

Ключи реестра, которые включают / отключают шифрование, настроены одинаково на обоих серверах. например

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client

При запуске того же кода C # на Сервер-1 и Сервер-2, Сервер-1 подключается к базе данных без проблем, но Сервер-2 выдает следующее сообщение об ошибке:

Произошла ошибка, связанная с сетью или конкретным экземпляром, при установке соединения с SQL Server. Сервер не найден или недоступен. Проверьте правильность имени экземпляра и настройку SQL Server для удаленных подключений. Дополнительные сведения см. В электронной документации по SQL Server. Сетевые интерфейсы SQL Server: протоколы удаленного клиента не включены, и в строке подключения [xFFFFFFFF] не указан удаленный протокол.

Со следующей трассировкой стека:

   at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection wningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()
   at Squealer.Squealer.TryToConnectToDatabase(DatabaseConnectionInfo connectionInfo)
   at Squealer.Squealer.Run(String[] args)

Я не вижу никаких правил в брандмауэрах ни на Сервер-1 или Сервер-2 это предотвратит сетевой трафик Сервер-SQL.

WireShark захватывает трафик между Сервер-1 и Сервер-SQL как это:

WireShark вообще не захватывает трафик между Сервер-2 и Сервер-SQL при попытке установить соединение SQL.

Сетевое соединение между Сервер-2 и Сервер-SQL было установлено следующее:

SQL Server настроен на использование TLS 1.1 и TLS 1.2. Когда он настроен на соединение с TLS 1.1, соединение успешно.

Я скомпилировал код .net как с .net 4.6.2, так и с 4.7.0. На обоих серверах установлено до .net 4.7.0.

Тестирование файла UDL с Provider = MSOLEDBSQL.1 фактически подключается на обоих серверах.

Несмотря на обширный поиск в Google, я не нашел никаких следов этого конкретного сообщения об ошибке, поэтому мне больше нечего здесь делать ..

Я ищу ключ реестра, который кто-то исказил? У меня нет идей.

Любая помощь или пролить свет на эту ситуацию будет полностью-полностью получили.

Спасибо.