服务依赖性不足以保证数据库客户端在系统重新引导后能够找到并运行SQL Server。他们可能能够创建与master数据库的连接,但是特定的数据库可能仍处于打开状态(处于恢复模式),并且在某些初始阶段将拒绝与它的连接。
延迟的确切持续时间变化很大,取决于系统上的数据库数量,恢复模式,LDF文件大小或重启前的流量等因素。
处理客户端依赖性的众所周知的方法是休眠和重试。然而,这种方法似乎并不完全干净或可靠,特别是当客户在技术和所有权方面各不相同以及这种竞争条件很少出现时。
是否有更好的方法将客户端与服务器启动同步,最好是将SQL Server服务保持在“正在启动”状态,直到所有数据库都被打开或标记为可疑?
答案 0 :(得分:5)
创建一个尝试访问数据库的Windows服务,除非成功建立可靠的连接,否则该数据库不会将自身报告为已启动。基本上,该服务将返回错误,服务管理器将尝试根据服务设置运行它。
现在,您可以依赖其他服务中的新服务来保证数据库的响应能力。
相关问题
<强>更新强>
此外,为了更清楚地了解数据库是否已启动并运行,请检查以下值:
SELECT state_desc
FROM sys.databases
WHERE name = 'YourDatabase'
如果除了'ONLINE'之外什么都没说,那么数据库还没有准备好。 (如果它存在的话) http://msdn.microsoft.com/en-us/library/ms190442.aspx