我有以下蚂蚁代码:
<parallel>
<sequential>
<mkdir dir="${DB2BACKUP}/DB2BACKUP"/>
<exec executable="db2cmd">
<arg value="DB2 BACKUP DATABASE DB TO C:\DB2BACKUP\ WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1"/>
</exec>
<echo> hello </echo>
</sequential>
</parallel>
当执行此操作时,将创建目录,打开另一个命令行,其中db2备份正在运行,但是ant正在以“hello”echo立即结束,并且不会等待db2备份完成。我试过
<exec executable="cmd">
<arg value="/C"/>
<arg value="db2cw"/>
<arg value="DB2 BACKUP DATABASE DB TO C:\DB2BACKUP\ WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1"/>
</exec>
但是它是一样的,我认为主要原因是db2cmd在单独的cmd行窗口下打开。我也尝试使用带有spawn属性的exec(假设我认为无论哪种方式)但仍然没有运气,有什么想法吗?
答案 0 :(得分:1)
如果DB2实用程序位于PATH中,那么您将以具有足够权限的用户身份运行命令,并且正确设置了DB2INSTANCE环境,不应该使用db2cmd或任何其他中间命令。您只需运行实际的备份命令即可。
此外,我可能想指出,任何与数据库的活动连接都将阻止命令在任何情况下运行。您可能希望在备份命令之前添加“强制应用程序全部”或“静默数据库”。 (如果你走那条路,也要记得取消静止。)