I've got a windows service that needs to connect to SQL Server databases (SQL Server 2008 R2, Windows Server 2008 R2). This service depends on SQL Server. The problem is when the SQL Server service starts:
Login failed for user 'Database'. Reason: Failed to open the
explicitly specified database. [CLIENT: ]2011-09-20 17:18:29.47 Logon
Error: 18456, Severity: 14, State: 38.
After reading several posts on internet, I checked the auto close property db (false), checked user permissions but can't be this issue because my service works fine few seconds after MSSQLSERVER
service start.
Got something strange in my log :
Recovery completed for database database (database ID 8) in 5
second(s) (analysis 909 ms, redo 0 ms, undo 809 ms.) This is an
informational message only. No user action is required.
Any idea about this ?
Thanks
Best Answer
Perhaps the default database for the service account login is one that takes a significant amount of time to start up (because it is large or has some other issue?). To test this you could change that login's default database to tempdb.
You could also consider adding
TRY/CATCH
error handling or waitfor logic to your service so it doesn't fail outright because of a momentary inability to connect (especially during startup).