SQL Server启动时login失败

我有一个需要连接到SQL Server数据库(SQL Server 2008 R2,Windows Server 2008 R2)的Windows服务。 这个服务依赖于SQL Server。 问题是当SQL Server服务启动时:

用户“数据库”login失败。 原因:无法打开明确指定的数据库。 [客户:]

2011-09-20 17:18:29.47login
错误:18456,严重性:14,状态:38。

在阅读互联网上的几篇文章后,我检查了自动closures属性db(false),检查了用户权限,但不能成为这个问题,因为我的服务在MSSQLSERVER服务启动几秒后工作正常。

在我的日志中有些奇怪的东西:

数据库数据库(数据库ID 8)在5秒内完成恢复(分析909毫秒,重做0毫秒,撤消809毫秒)。这仅为参考消息。 无需用户操作。

任何想法呢?

谢谢

也许服务帐户login的默认数据库是需要大量时间启动(因为它很大或有其他问题?)。 为了testing这个,你可以把这个login的默认数据库改成tempdb。

 ALTER LOGIN [domain\user] WITH DEFAULT_DATABASE = tempdb; 

您也可以考虑添加TRY/CATCHerror handling或waitfor逻辑到您的服务,所以它不会彻底失败,因为暂时无法连接(特别是在启动时)。

实际上它不会失败,exception处理正确,但下一个进程不会启动。

事实上,有人通过这个post给出了解决scheme:

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

最后我把一些逻辑来处理这个问题(检查db状态,直到它在线)

谢谢回复