У нас странная ситуация касательно наших тестов (в основном NUnit тесты):Восстановление БД требует от нас, чтобы переработать IIS пул приложений
- В
SetUp
методе каждый тест восстанавливает базу данных Иногда все последующие тесты не выполняются со следующими
SqlException
:SqlException (0x80131904): Не удается открыть базу данных «OurDatabaseName», запрошенную логином. Ошибка входа в систему. Ошибка входа для пользователя «NT AUTHORITY \ NETWORK SERVICE».
Права доступа являются правильными, поэтому ошибка вводит в заблуждение.
- Как только мы перерабатывают IIS пул приложений для приложения, все возвращается к нормальной
Эта проблема возникает прибл. в одном из пяти исполнений. Если мы удалим вызов восстановления базы данных -> никаких проблем вообще. Кажется, что есть какое-то состояние гонки при восстановлении нашей базы данных, которая каким-то образом не закрывает старые связи ?!
Есть ли специальный код, который мы должны выполнить после восстановления базы данных, чтобы принудительно убить все подключения к базе данных или что-то в этом роде?
Мы уже звоним SqlConnection.ClearAllPools();
после восстановления базы данных (однако из веб-проекта тестирования ... так что не знаю, влияет ли это на веб-приложение).
Что произойдет, если вы повторите попытку ?. Попробуйте утилизировать, воссоздать и снова открыть соединение при сбое. –
Повторить с помощью браузера-обновления в веб-тесте? => тот же результат, пока мы не переработаем пул приложений. Повторить на сервере => как решить, когда повторить попытку? Это исключение SqlException довольно общее/вводящее в заблуждение и может быть даже допустимым в некоторых случаях ... –