[C#] Как вы относитесь к ошибкам транспортного уровня в SqlConnection?


Answers

Это сообщение в блоге Майкла Аспенгрена объясняет сообщение об ошибке «При отправке запроса на сервер произошла ошибка транспортного уровня».

Question

Время от времени в приложении с большим объемом .NET вы можете увидеть это исключение при попытке выполнить запрос:

System.Data.SqlClient.SqlException: при отправке запроса на сервер произошла ошибка транспортного уровня.

Согласно моим исследованиям, это то, что «просто происходит», и не так много можно сделать, чтобы предотвратить его. Это не происходит из-за плохого запроса и, как правило, не может быть дублировано. Он просто размножается, возможно, раз в несколько дней в загруженной системе OLTP, когда по какой-либо причине TCP-соединение с базой данных ухудшается.

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

У кого-нибудь есть альтернативные решения?




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

Полностью исправленная проблема заключалась в создании агрегирования ссылок (LAG) на нашем коммутаторе. Наш сервер Dell FX1 имеет избыточные линии волокон, выходящие из его задней части. Мы не понимали, что переключатель, к которому они подключены, необходим для настройки LAG на этих двух портах. См. Подробности здесь: https://docs.meraki.com/display/MS/Switch+Ports#SwitchPorts-LinkAggregation




У меня такая же проблема. Я спросил своих друзей-друзей, и все сказали, что люди ответили здесь: это связь между компьютером и сервером базы данных. В моем случае это был мой интернет-провайдер, или там был маршрутизатор. После обновления маршрутизатора проблема исчезла. Но есть ли у вас какие-либо другие отказы от подключения к Интернету с вашего компьютера или сервера? Я имел...




Насколько я могу судить, класс 20 - это транспортный уровень.







использовать Enterprise Services с компонентами транзакции