SQL Server 启动时登录失败

SQL Server 启动时登录失败

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

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

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

在阅读了互联网上的几篇帖子后,我检查了自动关闭属性数据库(false),检查了用户权限,但不可能是这个问题,因为我的服务在MSSQLSERVER服务启动几秒钟后运行良好。

我的日志中发现了一些奇怪的事情:

数据库数据库(数据库 ID 8)的恢复在 5 秒内完成(分析 909 毫秒,重做 0 毫秒,撤消 809 毫秒。)这只是一条信息性消息。无需用户采取任何措施。

对此有什么想法吗?

谢谢

答案1

也许服务帐户登录的默认数据库需要花费大量时间才能启动(因为它很大或有其他问题?)。要测试这一点,您可以将该登录的默认数据库更改为 tempdb。

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

您还可以考虑TRY/CATCH向您的服务添加错误处理或等待逻辑,这样它就不会因为暂时无法连接(特别是在启动期间)而直接失败。

答案2

实际上它并没有失败,异常被正确处理,但下一个过程没有启动。

事实上,有人通过这个帖子给出了解决方案:

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

最后我提出了一些逻辑来处理这个问题(检查数据库状态直到它上线)

谢谢回复

答案3

相关内容