2

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

3 Answers 3

3

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.

ALTER LOGIN [domain\user] WITH DEFAULT_DATABASE = 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).

0

Actually it doesn't fail, exception is handled correctly, but the next process does not start.

In fact, someone gave the solution through this post :

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

Finally i put some logic to handle this problem (check if db state until it's online)

Thanks for the reply

0

Try setting your service to Automatic (DelayedStart).

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .