2015-02-26 2 views
0

У нас странная ситуация касательно наших тестов (в основном NUnit тесты):Восстановление БД требует от нас, чтобы переработать IIS пул приложений

  • В SetUp методе каждый тест восстанавливает базу данных
  • Иногда все последующие тесты не выполняются со следующими SqlException:

    SqlException (0x80131904): Не удается открыть базу данных «OurDatabaseName», запрошенную логином. Ошибка входа в систему. Ошибка входа для пользователя «NT AUTHORITY \ NETWORK SERVICE».

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

  • Как только мы перерабатывают IIS пул приложений для приложения, все возвращается к нормальной

Эта проблема возникает прибл. в одном из пяти исполнений. Если мы удалим вызов восстановления базы данных -> никаких проблем вообще. Кажется, что есть какое-то состояние гонки при восстановлении нашей базы данных, которая каким-то образом не закрывает старые связи ?!

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

Мы уже звоним SqlConnection.ClearAllPools(); после восстановления базы данных (однако из веб-проекта тестирования ... так что не знаю, влияет ли это на веб-приложение).

+0

Что произойдет, если вы повторите попытку ?. Попробуйте утилизировать, воссоздать и снова открыть соединение при сбое. –

+0

Повторить с помощью браузера-обновления в веб-тесте? => тот же результат, пока мы не переработаем пул приложений. Повторить на сервере => как решить, когда повторить попытку? Это исключение SqlException довольно общее/вводящее в заблуждение и может быть даже допустимым в некоторых случаях ... –

ответ

0

Похоже, что что-то блокирует соединение. Убедитесь, что вы отключили удаленные подключения, или причиной отказа может быть антивирус. Проверьте свой журнал антивируса или карантин, будут ли службы sql-сервера в списке присутствовать, а затем попытайтесь переместить его в список исключений.

+0

Но что блокирует соединение? И почему только в некоторых случаях? На наших внутренних тестовых серверах нет антивирусного инструмента. Также все ваши предложения подскажут, что он либо работает все время, либо никогда. –

Смежные вопросы