Назад | Перейти на главную страницу

Ошибка входа при запуске SQL Server

У меня есть служба 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 обработка ошибок или логика ожидания для вашей службы, чтобы она не выходила из строя из-за кратковременной невозможности подключения (особенно во время запуска).

На самом деле ничего не происходит, исключение обрабатывается правильно, но следующий процесс не запускается.

Фактически, кто-то дал решение через этот пост:

http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/04893862-0b80-416e-a678-da7effdfa7b3

Наконец, я добавил некоторую логику для решения этой проблемы (проверьте, находится ли состояние db, пока оно не подключено)

Спасибо за ответ

Попробуйте установить для своей службы автоматический режим (DelayedStart).

http://blogs.technet.com/b/askperf/archive/2008/02/02/ws2008-startup-processes-and-delayed-automatic-start.aspx