У меня есть служба Windows, которая должна подключаться к базам данных SQL Server (SQL Server 2008 R2, Windows Server 2008 R2). Эта служба зависит от SQL Server. Проблема в том, что при запуске службы SQL Server:
Не удалось войти в систему для пользователя «База данных». Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ:]
2011-09-20 17: 18: 29.47 Вход в систему
Ошибка: 18456, уровень серьезности: 14, состояние: 38.
Прочитав несколько сообщений в Интернете, я проверил свойство автоматического закрытия db (false), проверил разрешения пользователей, но не может быть этой проблемой, потому что моя служба работает нормально через несколько секунд после MSSQLSERVER
запуск службы.
В моем журнале есть что-то странное:
Восстановление завершено для базы данных базы данных (идентификатор базы данных 8) за 5 секунд (анализ 909 мс, повтор 0 мс, отмена 809 мс). Это только информационное сообщение. От пользователя не потребуется никаких действий.
Есть идеи по этому поводу?
Спасибо
Возможно, база данных по умолчанию для входа в учетную запись службы - это та, которая требует значительного времени для запуска (потому что она большая или имеет какую-то другую проблему?). Чтобы проверить это, вы можете изменить базу данных по умолчанию для этого логина на tempdb.
ALTER LOGIN [domain\user] WITH DEFAULT_DATABASE = tempdb;
Вы также можете рассмотреть возможность добавления TRY/CATCH
обработка ошибок или логика ожидания для вашей службы, чтобы она не выходила из строя из-за кратковременной невозможности подключения (особенно во время запуска).
На самом деле ничего не происходит, исключение обрабатывается правильно, но следующий процесс не запускается.
Фактически, кто-то дал решение через этот пост:
Наконец, я добавил некоторую логику для решения этой проблемы (проверьте, находится ли состояние db, пока оно не подключено)
Спасибо за ответ
Попробуйте установить для своей службы автоматический режим (DelayedStart).