[sql-server] Иногда работает подключение к SQL Server


5 Answers

У Ive была та же самая ошибка, которая возникла подозрительно с последним раундом обновлений Microsoft (09/02/2016). Я обнаружил, что SSMS подключен без проблем, в то время как мое приложение ASP.NET вернуло «период времени ожидания, истекший при попытке использовать подтверждение подтверждения присоединенного входа»

Решение для меня заключалось в том, чтобы добавить в строку соединения время ожидания 30 секунд, например:

ConnectionString="Data Source=xyz;Initial Catalog=xyz;Integrated Security=True;Connection Timeout=30;"

В моей ситуации единственное затронутое соединение - это тот, который использует интегрированную систему безопасности, и я был олицетворял пользователя перед подключением, другие соединения с тем же сервером с использованием SQL Authentication работали нормально!

В то же время пострадали 2 тестовые системы (отдельные клиенты и серверы Sql), что привело к подозрению в обновлении Microsoft!

Question

Приложение ADO.Net иногда может подключаться к другому серверу в локальной сети. Кажется случайным, является ли данная попытка подключения успешной или неудачной. Соединение использует строку соединения в форме:

Server = THESERVER \ TheInstance; Database = TheDatabase; Идентификатор пользователя = TheUser; Password = ThePassword;

возвращенная ошибка:

Истекло время ожидания подключения. Период ожидания истек, пытаясь использовать подтверждение подтверждения авторизации перед входом в систему.
Это может быть связано с тем, что рукопожатие до входа в систему не удалось или сервер не смог ответить вовремя.
Продолжительность, затрачиваемая при попытке подключения к этому серверу, была - [Pre-Login] initialization = 42030; квитирование = 0;

Приложение .NET - небольшое тестовое приложение, которое выполняет следующий код:

using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
    conn.Open();
    int rowCount = (int)cmd.ExecuteScalar();
}

TheTable небольшой, всего 78 строк.

Однако на том же компьютере, где приложение .NET получает эту ошибку, я могу подключиться к THESERVER с помощью SSMS и User Id / Password, названного в строке подключения.

Почему подключение может быть неудачно из приложения ADO.Net, но с идентичными учетными данными из SSMS?




Ошибка «Истекло время ожидания соединения» обычно происходит в следующих случаях:

  • Экземпляр SQL Server Database Engine не запущен.
  • Служба браузера SQL Server не запущена.
  • TCP / IP отключен.
  • Имя сервера было введено неверно.
  • Существуют сетевые проблемы.
  • Порт TCP / IP для экземпляра Database Engine блокируется брандмауэром.
  • Клиент и сервер не настроены на использование одного и того же сетевого протокола.

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




При подключении к размещенному серверу у меня была такая же проблема с рукопожатием.

Я открыл свою сеть и центр обмена и включил IPv6 в своем беспроводном сетевом соединении.




В моем случае выше всех вариантов уже было.

Решила его, увеличив время ожидания соединения = 30.




Я исправил эту ошибку в Windows Server 2012 и SQL Server 2012, включив IPv6 и разблокировав входящий порт 1433.




У меня была эта проблема, когда я переносил SharePoint 2010 на 2013. Я подозревал, что, поскольку сервер базы данных находится на другой стороне брандмауэра, который не маршрутизирует IP6, а затем пытается использовать IP6 и не удается подключиться к базе данных.

Я думаю, что проблема теперь решена. Ошибки, похоже, прекратились. Что я сделал, так это просто отключил IP6 (отключив его) для сетевого адаптера на серверах SharePoint.




Related