2015-02-10 66 views
1

我正在尝试使用脚本为DB2(10.1.0)执行脱机备份并安排它。用于DB2的脱机备份脚本

db2backup.bat

@ECHO OFF 
FOR xxxx IN (OPNACT BLOGS SNCOMM DOGEAR FILES FORUM HOMEPAGE PEOPLEDB WIKIS) DO ( 
DB2 CONNECT TO xxxx 
DB2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS 
DB2 CONNECT RESET 
DB2 BACKUP DATABASE xxxx TO "C:\Backup\DB2" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 3 WITHOUT PROMPTING 
DB2 CONNECT TO xxxx 
DB2 UNQUIESCE DATABASE 
DB2 CONNECT RESET 
) 

但是,当我尝试运行它,

DB2CMD /c /w /i C:\Backup\db2backup.bat 

我得到一个错误,

“XXXX是意外的在这个时候。”

为什么我得到这个?我怎么能避免它?

很多感谢您的输入!!

回答

0

问题是你如何处理变量。 XXXXX的是不是一个有效的名称,应当由两个百分比之前:%% XXXXX

@ECHO OFF 
FOR %%xxxx IN (OPNACT BLOGS SNCOMM DOGEAR FILES FORUM HOMEPAGE PEOPLEDB WIKIS) DO ( 
DB2 CONNECT TO %%xxxx 
DB2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS 
DB2 CONNECT RESET 
DB2 BACKUP DATABASE %%xxxx TO "C:\Backup\DB2" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 3 WITHOUT PROMPTING 
DB2 CONNECT TO %%xxxx 
DB2 UNQUIESCE DATABASE 
DB2 CONNECT RESET 
) 

欲了解更多信息,您可以检查这个问题What is the difference between % and %% in a cmd file?

+0

喜AngocA,我尝试这样过,但我得到同样的错误 - - >%xxxx此时意外。 – Archangle 2015-02-12 05:05:01

+0

这不是DB2错误,而是一个批处理问题。你是否只用了一个'x':DO(echo %% x)一旦用echo命令显示了值,你可以用db2替换它命令。 – AngocA 2015-02-13 13:54:56