等待服务完成启动的shell命令是什么?

9 浏览
0 Comments

等待服务完成启动的shell命令是什么?

我需要一个简单的批处理命令,它将等待指定的服务(实际上是SQL Server)启动完成。你看,这个bat文件运行一些非服务可执行文件,在启动时尝试连接到SQL Server。但它们失败了。

我尝试使用一些Windows Shell命令的help("/?"键),但它们似乎没有给出我需要的操作。

0
0 Comments

很不幸,这个命令并不存在。sc命令可以启动和停止服务,并且可以查询服务的状态(参见这个回答)。但是即使在查询时,你只会得到“服务正在运行”,没有办法知道服务启动的进度如何。

有两种解决方法:

  1. 等待一段时间
  2. 在循环中运行一个简单的SQL命令

第一种方法可以有所帮助,但并不能完全解决问题;当服务器负载较重时,启动时间可能会更长。

对于第二种方法,使用一个有超时机制的循环(伪代码):

  1. 将计数器设置为X
  2. 尝试连接
  3. 如果连接成功,则退出并返回成功
  4. 减少计数器的值
  5. 如果计数器小于等于0 -> 报错
  6. 休眠1秒
  7. 返回第2步

为了提高安全性,你还可以在其中添加一个sc query命令,以确保服务未失败。

0