在SQL Server错误日志文件中,我找到了以下几行:
2018-02-22 14:10:58.95 spid17s Starting up database 'msdb'.
2018-02-22 14:10:58.95 spid16s Starting up database 'ReportServer'.
2018-02-22 14:10:58.95 spid18s Starting up database 'ReportServerTempDB'.
2018-02-22 14:10:58.95 spid19s Starting up database 'XYZ'.
如果在此之前我检查数据库XYZ的状态,则ONLINE
使用以下语句:
SELECT state_desc FROM sys.databases WHERE name='XYZ'
...但是当我尝试使用C#应用程序连接到该数据库时,它无法连接到数据库。
错误是:
用户“ asd”的登录失败。
原因:无法打开显式指定的数据库。
我尝试了三种不同的用户(Windows用户,sa,为应用程序定义的SQL Server用户)。在操作系统启动时运行该应用程序时会发生问题,但是如果在启动后手动启动该应用程序,则不会发生任何错误,因此我认为所有SQL Server设置和防火墙设置都是正确的。
在此之前,我还检查了服务状态是否正在运行。
我还应该检查什么以确保数据库实际上已联机并且可以查询?
我正在寻找一个可以告诉我可以查询数据库的键,而不是延迟一段时间(即使不是基于明确的原因)。
我考虑过扫描错误日志中的文本“正在启动数据库XYZ”,但这意味着我必须为SQL Server错误日志的路径为应用程序添加一个设置。这也意味着要多次读取文件,直到找到该短语。