Мы обновили некоторые из наших приложений .NET Core 2.2 до .NET Core 3.0. После обновления наши приложения, работающие в контейнерах Docker, не могут подключиться к SQL Server 2016, работающему на автономном компьютере в нашей доменной сети. Просматривая трассировку пакетов, мы видим, что соединение зависает при рукопожатии перед входом в систему и, в конечном итоге, прерывается. Возврат к .NET Core 2.2 сразу решает проблему, и наши контейнеры снова могут подключаться к нашим базам данных.
Очевидно, что мы убедились в отсутствии проблем с DNS, поскольку эти контейнеры работают в производственной среде с .NET Core 2.2. .NET Core 3.0 ломает их, поскольку они не могут подключиться к SQL Server по сети, поэтому мы пока откатываемся до версии 2.2 и прекращаем обновление до тех пор, пока не сможем определить, почему контейнеры .NET Core 2.2 подключаются к нашим серверам SQL, а .NET Core 3.0 контейнеры нет.
Мы также создали новые проекты .NET Core 3.0 с нуля, чтобы проверить соединение. Результат тот же: время ожидания контейнеров истекает во время предварительного входа в SQL Server. При изменении проекта обратно на .NET Core 2.2 вместе с EF Core обратно на 2.2.6 проблема сразу же решается.
Поскольку мы используем EF Core для доступа к данным, мы также попытались оставить EF Core на версии 2.2.6, но обновив проект до .NET Core 3.0, но время ожидания соединения по-прежнему прерывается.
Если мы не добавим поддержку Docker и не запустим приложения как консольные или веб-приложения (не в контейнерах), то с .NET Core 3.0 проблем не возникнет. Только когда мы помещаем их в контейнер, приложения .NET Core 3.0 не могут подключиться к SQL Server.
Согласно предложению Дэна в комментариях ниже, я изменил доступ к данным в тестовом проекте на Microsoft.Data.SqlClient, используя рукописный SQL и DataReader. Затем я воссоздал Dockerfile для .net core 3.0 и убедился, что ссылка на правильный образ контейнера. Такое же поведение: зависает при рукопожатии PreLogin с SQL Server. Перешел на .net core 2.2 и смог подключаться и читать данные с SQL Server.
System.Data.SqlClient
? Если да, мне любопытно, есть ли у вас такая же проблема с Microsoft.Data.SqlClient. Может быть, вы могли бы попробовать с тестовым контейнером. - person Dan Guzman   schedule 26.09.2019