我有 Apache Ant 文件 (build.xml),它被设置为创建我的生产服务器的自动备份。它设置为停止 Apache 服务器和 MSSQL2000 - 备份所有内容并再次启动这两个服务(及其依赖项)。它在旧的 WIN 2008 服务器下可以正常工作,但在 WIN8 下不行。当执行 .bat 文件以运行 Ant 进程时,它会打开 CMD(应该如此),但没有任何停止/启动操作正确执行。我收到“访问被拒绝”。回复。
这是执行 .bat (Ant) 文件时的 CMD 输出:
assemble:
stop.server.apache:
[exec] System error 5 has occurred.
[exec]
[exec] Access is denied.
[exec]
[exec] Result: 2
stop.server.ms-sql:
[exec] No valid response was provided.
[exec] The following services are dependent on the MSSQLSERVER service.
[exec] Stopping the MSSQLSERVER service will also stop these services.
[exec]
[exec] SQLSERVERAGENT
[exec]
[exec] Do you want to continue this operation? (Y/N) [N]:
[exec] Result: -1
[exec] System error 5 has occurred.
[exec]
[exec] Access is denied.
[exec]
[exec] Result: 2
负责启动/停止服务的实际 build.xml 部分如下:
....... 代码开头
<macrodef name="service">
<attribute name="service"/>
<attribute name="action"/>
<sequential>
<exec executable="cmd.exe">
<arg line="/c net @{action} '@{service}'"/>
</exec>
</sequential>
</macrodef>
<target name="start.server.ms-sql">
<service action="start" service="MSSQLSERVER"/>
<service action="start" service="SQLSERVERAGENT"/>
</target>
<target name="stop.server.ms-sql">
<service action="stop" service="SQLSERVERAGENT"/>
<service action="stop" service="MSSQLSERVER"/>
</target>
<target name="start.server.apache">
<service action="start" service="Apache2.2"/>
</target>
<target name="stop.server.apache">
<service action="stop" service="Apache2.2"/>
</target>
.......更多代码在这里
我已经启用了所有磁盘/文件夹权限以确保它不会受到影响(我知道 Vista 及更高版本的权限发生了变化。我还研究了Apache Ant 文档,但我找不到任何关于停止/启动具有提升权限的服务的信息.
任何的想法 ?
注意:Apache2.2 和 MSSQL 从驱动器 W:\ 运行,Win OS 从 C: 运行。我的 Ant 路径设置正确,但我认为这可能会导致权限访问问题。