0

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

我尝试help(“/?”键)一些 Windows Shell 命令,但它们似乎没有响应我需要的操作。

4

1 回答 1

2

不幸的是,这个命令不存在。sc可以启动和停止服务,并且可以查询服务的状态(请参阅此答案)。但是即使查询,也只会得到“Service is running”;没有办法知道该服务在其启动中走了多远。

有两种解决方法:

  1. 睡一会儿
  2. 循环运行一个简单的 SQL 命令

第一种方法会有所帮助,但不能完全解决问题;当服务器处于负载状态时,启动可能需要更长的时间。

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

  1. 将计数器设置为 X
  2. 尝试连接
  3. 如果连接成功,则退出成功
  4. 递减计数器
  5. 如果计数器 <= 0 -> 错误
  6. 睡眠 1s
  7. 转到第 2 步

为了更加安全,您可以在其中添加一个sc query以确保服务没有失败。

于 2012-10-15T08:43:11.487 回答