Произошла ошибка транспортного уровня ... (существующее соединение закрыто сервером) Sql Server 2008 - PullRequest
16 голосов
/ 10 июля 2009

У меня есть веб-приложение, которое в настоящее время работает в операционной системе Windows XP с базой данных SQL Server 2005 и IIS 6.0.

Сейчас мы пытаемся обновить его до IIS 7.0 в базе данных Windows Server 2008 и SQL Server 2008.

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

Используя "sp_who" , я подтвердил, что открыто только одно соединение, которое я использую.

Может кто-нибудь сказать мне, что может быть причиной этой проблемы?

Ответы [ 8 ]

14 голосов
/ 29 января 2010

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

4 голосов
/ 01 августа 2009

Может быть, база данных настроена на автоматическое закрытие? Раньше это было по умолчанию для баз данных, созданных в более старой версии MSDE / Express.

ALTER DATABASE YourDatabaseName SET AUTO_CLOSE OFF;

Подробнее:

Обзор SQL Server 2005 Express Edition состояния:

Такие функции, как автоматическое закрытие и возможность копировать базы данных как файлы, включены в SQL Server Express по умолчанию ...

Я не могу вспомнить, какой пакет обновления изменил значение по умолчанию, но для пользовательского интерфейса новой базы данных в версии SP3 Management Studio Express по умолчанию для Auto Close установлено значение false.

2 голосов
/ 17 декабря 2009

Это ошибка, которая возникает при подключении к базе данных из-за ошибки сетевого уровня нижнего уровня, которую вы не можете обработать с Sql Server.

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

Вы должны попытаться переподключиться, по крайней мере, еще пару раз, чтобы убедиться, что ошибка не является постоянной, и если это так, выведите исключение. Мой опыт подсказывает мне, что, пытаясь восстановить соединение, вы добьетесь успеха в 99,9% случаев.

1 голос
/ 10 июля 2009

Часто база данных находится в автономном режиме / закрыта или экземпляр SQL перезапускается / отключается

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

Получил эту попытку выполнить команды из нескольких потоков на одном объекте соединения в .net, что было глупой ошибкой. Блокировка или использование отдельного соединения для каждого потока исправляет это.

0 голосов
/ 24 марта 2014

Используйте clearpool (urSQLconnection) вместе с dispose. Это очистит грязное соединение. и вы можете открыть новое соединение.

0 голосов
/ 08 августа 2013

В моем случае. У нас есть DELL R720, сетевые платы и платы PCI Broadcom NetXtreme Gigabit Ethernet. Мы сталкиваемся с двумя проблемами.

  1. Скорость сети очень мала для виртуальных машин HyperV. Решение состоит в том, чтобы отключить «Очереди виртуальной машины» в окнах свойств Broadcom хоста HyperV. Он находится на вкладке «Дополнительно».

  2. Клиент SQL, имеющий эту проблему транспортного уровня. Это происходило только раз в 10-15 минут. В то же время служба RDP время от времени выбивает клиента. Решение состоит в том, чтобы отключить «Large Send Offload V2» в окнах свойств Broadcom хоста HyperV. Он находится на вкладке «Дополнительно».

0 голосов
/ 21 июля 2012

Ошибки транспортного уровня часто связаны с разрывом соединения с сервером sql ... обычно сетевым.

Timeout Expired обычно генерируется, когда выполнение sql-запроса занимает слишком много времени. Это сценарий в вашем случае? Как хранимый процесс занимает слишком много времени для выполнения или есть пакетные задания, которые выполняются?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...