数据库客户端:SQL Server重启后如何等待数据库激活?

Jir*_*ika 1 sql-server windows-services

服务依赖性不足以保证数据库客户端在系统重新引导后能够找到并运行SQL Server.他们可能能够创建与主数据库的连接,但是特定数据库可能仍处于打开状态(处于恢复模式),并且在某些初始时间段内将拒绝与其建立的连接.

延迟的确切持续时间变化很大,取决于系统上的数据库数量,恢复模式,LDF文件大小或重新引导之前的流量等因素.

处理客户端依赖性的众所周知的方法是休眠和重试.然而,这种方法似乎并不完全干净或可靠,特别是当客户在技术和所有权方面各不相同以及这种竞争条件很少出现时.

有没有更好的方法来同步客户端与服务器启动,理想情况下通过将SQL Server服务保持在"正在启动"状态,直到所有数据库都被打开或标记为可疑?

Den*_*eev 5

创建一个尝试访问数据库的Windows服务,除非成功建立可靠的连接,否则该数据库不会将自身报告为已启动.基本上,该服务将返回错误,服务管理器将尝试根据服务设置运行它.

现在,您可以依赖其他服务中的新服务来保证数据库的响应能力.

相关问题

更新

此外,要更清楚地了解数据库是否已启动并运行,请检查以下值:

SELECT state_desc
FROM sys.databases
WHERE name = 'YourDatabase'
Run Code Online (Sandbox Code Playgroud)

如果它说"ONLINE"之外的任何内容,那么数据库还没有准备好.(如果它存在的话) http://msdn.microsoft.com/en-us/library/ms190442.aspx