Sql Server Agent требуется для удаленных подключений? - PullRequest
1 голос
/ 12 февраля 2009

Я подключаюсь к удаленному экземпляру сервера sql со следующей строкой подключения

"Сетевая библиотека = DBMSSOCN; Источник данных = xx.xxx.x.xxx, 1433; Начальный каталог = MyDatabase; Идентификатор пользователя = MyUserId; Пароль = MyPassword; Тайм-аут соединения = 120;"

  1. Sql Server Browser работает
  2. Локальные и удаленные подключения разрешены только с использованием TCP / IP

Приложению не удается подключиться, ссылаясь на следующее SqlException

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

Код для подключения следующим образом

using (SqlConnection connection = new SqlConnection(m_ConnectionString))
{
    connection.Open(); // falls over here
}

Я думал о конфигурации брандмауэра на порту 1433, но почему брандмауэр иногда разрешает соединения, а иногда нет?

Требуется ли запуск Sql Server Agent? И если так, то почему описание Sql Server Agent на MSDN не очевидно в этом отношении?

Спасибо!

РЕДАКТИРОВАТЬ: Попытка добавить явное правило на брандмауэре, чтобы открыть 1433 и пока все хорошо, но может быть случайность снова так трудно сказать, если я исправлю или нет

Ответы [ 3 ]

2 голосов
/ 12 февраля 2009

Нет, агент SQL Server не обязательно должен быть запущен. Агент SQL Server необходим только для выполнения запланированных задач на сервере SQL.

Возможно, это проблема сети. Можете ли вы пинговать сервер? Если это так, попробуйте пропинговать его постоянно с / t и посмотреть, все ли пакеты получены.

Это также может быть проблема с загрузкой сервера SQL. Сервер простаивает или находится под нагрузкой?

Не могли бы вы протестировать приложение локально на сервере SQL или в той же локальной сети, чтобы убедиться, что проблема сохраняется?

1 голос
/ 09 сентября 2010

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

Убедитесь, что для параметра «Автоматическое закрытие» установлено значение «Ложь». Это предотвращает его отключение после закрытия последнего подключения.

http://itknowledgeexchange.techtarget.com/sql-server/auto-close-is-almost-as-bad-as-auto-grow/

1 голос
/ 12 февраля 2009

Что ж, вам не нужен агент SQL Server, работающий сейчас, ошибка указывает на то, что вы получаете время ожидания из сценария.

Существуют различные причины, по которым вас могут заблокировать. Возможно, брандмауэр настроен на одновременное разрешение только определенного количества подключений к порту. Или сама база данных ограничивает количество соединений. Ваш интернет работает медленно, и у вас истекает время ожидания 120 секунд. Список можно продолжить. :)

...