Соединение с SQL Server закрыто удаленным хостом - PullRequest
0 голосов
/ 07 марта 2019

В настоящее время у меня есть SQL Server, размещенный с Microsoft Azure на базовом уровне.При вызове db.SaveChanges() в Entity Framework Core я получаю следующую ошибку:

Произошла ошибка транспортного уровня при получении результатов с сервера.(поставщик: поставщик TCP, ошибка: 0 - существующее соединение было принудительно закрыто удаленным хостом.)

и

Win32Exception: существующее соединение было принудительно закрытоудаленный хост

Кто-нибудь, возможно, сталкивался с этим раньше?

1 Ответ

0 голосов
/ 07 марта 2019

Если соединение не используется в течение нескольких минут, база данных SQL Azure закрывает соединение. Создайте метод KeepAlive и вызывайте его каждые 5 минут, чтобы соединение оставалось открытым.

Пример метода поддержания активности, который читает очень маленькую таблицу.

private void KeepAlive()
{
    var dummy = _context.BankAccounts.AsNoTracking().ToList().Count;
    Console.WriteLine($@"{DateTime.Now} KeepAlive");
}

Если вы обрабатываете большое количество записей и затем сохраняете их, попробуйте обработать и сохранить их, используя пакетная обработка .

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

И последнее: следите за потреблением DTU на портале, и если вы видите, что потребление DTU достигает предела, то масштабируйтесь до уровня Standard.

...