本帖最后由 simon_peng 于 2014-06-17 15:00 编辑
修改sybase_mydb_backup这个脚本会生成syb_test_dump文件到c:\windows\system32下,然后通过isql -Usa -P -i c:\windows\system32\syb_test_dump执行这个脚本,但是在我这台win2008上手工执行isql -Usa -P -i和脚本报错一样提示找不到这个文件,把文件复制到其它目录能执行但是会报错 C:\Users\Administrator>isql -Usa -P -i C:\Windows\System32\syb_test_dump Unable to open input file 'C:\Windows\System32\syb_test_dump'.
C:\Users\Administrator>isql -Usa -P -i e:\syb_test_dump Backup Server session id is: 8. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server. Backup Server: 4.124.2.1: Archive API error for device='sybackup::-SERV master -CLIENT WIN-1BHQJAPL4ET.nbu.com -POL sybase_backup -SCHED Default-Application-Backup -STAT_FILE C:\Program Files\Veritas\NetBackup\Logs\user_ops\dbext\logs\sybase_script_status.06172014.1 35106.2264.2556::00': Vendor application name=<UNINIT>, Library version=0, API r outine=<UNINIT>, Message=Unable to open API library for device 'sybackup::-SERV master -CLIENT WIN-1BHQJAPL4ET.nbu.com -POL sybase_backup -SCHED Default-Applica tion-Backup -STAT_FILE C:\Program Files\Veritas\NetBackup\Logs\user_ops\dbext\lo gs\sybase_script_status.06172014.135106.2264.2556'. Library path is 'C:\sybase\A SE-12_5\lib\libsybackup.DLL'. LoadLibrary() returned: Code=87, Message=Cannot ge t operating system error tex )
@REM $Revision: 1.4 $ @REM bcpyrght @REM************************************************************************** @REM * $VRTScprght: Copyright 2013 Symantec Corporation,All Rights Reserved $ * @REM************************************************************************** @REM ecpyrght @setlocal @echo off @REM************************************************************************** @REM Replace C:\Sybase below with your actual Sybase homedirectory @REM************************************************************************** @set SYBASE=C:\Sybase @REM************************************************************************** @REM Replace Sybase below with the actual name of your SQL Server这里应该填写DSQUERY里配置的server name @REM************************************************************************** @setSYBSERVER=SYBASE @REM ************************************************************************** @REM Replace SYB_DB below with the actual name of your Sybase database @REM************************************************************************** @setDATABASE_NAME=test if "%SYBASE_OCS%" == "" goto notsyb12 @REM ********* Sybase 12.0 or later *********** @set OCS_QUAL=\%SYBASE_OCS% goto cont1 :notsyb12 @REM ********* Sybase 11.9.2 or earlier ********** @set OCS_QUAL= :cont1 @REM************************************************************************** @REM These environment variables are set by NetBackup. @REM************************************************************************** @echo SYBACKUP_SERVER = %SYBACKUP_SERVER% @echo SYBACKUP_POLICY = %SYBACKUP_POLICY% @echo SYBACKUP_SCHED = %SYBACKUP_SCHED% @echo SYBACKUP_CLIENT = %SYBACKUP_CLIENT% @echo SYBACKUP_SCHEDULED = %SYBACKUP_SCHEDULED% @echo SYBACKUP_USER_INITIATED = %SYBACKUP_USER_INITIATED% @REM************************************************************************** @REM Replace "database_dump" below with your actual NetBackupschedule name @REM which is used for a full backup of the Sybase database. @REM************************************************************************** if "%SYBACKUP_SCHED%"== "sybase_full" goto dbdump @REM *********** NetBackup hasstarted a "transaction_dump" backup *********** set DUMP_TYPE=TRANSACTION goto entercmd :dbdump @REM *********** NetBackup hasstarted a "database_dump" backup *********** set DUMP_TYPE=DATABASE :entercmd @REM************************************************************************** @REM Replace"Default-Application-Backup" below with your actual NetBackup @REM Application Backup typeschedule name for the Sybase database. @REM ************************************************************************** @REM 这里输出到.\syb_%DATABASE_NAME%_dump是输出到了system32目录,下面的语句input的时候会报错找不到问题,我只能先把输出路径写死到当前路径 @REM echo dump %DUMP_TYPE%%DATABASE_NAME% to "sybackup::-SERV %SYBACKUP_SERVER% -CLIENT%SYBACKUP_CLIENT% -POL %SYBACKUP_POLICY% -SCHED Default-Application-Backup-STAT_FILE %STATUS_FILE%" > .\syb_%DATABASE_NAME%_dump @REM %STATUS_FILE%显示的路径怀疑可能有空格,执行的脚本始终会报错,添加了""后还是会报错 @REM echo dump %DUMP_TYPE%%DATABASE_NAME% to "sybackup::-SERV %SYBACKUP_SERVER% -CLIENT%SYBACKUP_CLIENT% -POL %SYBACKUP_POLICY% -SCHED Default-Application-Backup-STAT_FILE ""%STATUS_FILE%""" > c:\script\syb_%DATABASE_NAME%_dump @REM 将-STAT_FILE ""%STATUS_FILE%""去掉后,备份会成功,但是nbu前台日志看不到备份后的大小,没有调用Default-Application-Backup,怀疑是因为STAT_FILE的原因,但是sybase后台日志能看到成功备份。 @echo dump %DUMP_TYPE%%DATABASE_NAME% to "sybackup::-SERV %SYBACKUP_SERVER% -CLIENT%SYBACKUP_CLIENT% -POL %SYBACKUP_POLICY% -SCHEDDefault-Application-Backup" > c:\script\syb_%DATABASE_NAME%_dump @REM************************************************************************** @REM Remove the REM from thebeginning of the line below if you are going to @REM use multiple stripes for thebackup. Repeat this line for each stripe. @REM Replace"Default-Application-Backup" below with your actual NetBackup @REM Application Backup typeschedule name for the Sybase database. @REM************************************************************************** @REM echo stripe on"sybackup::-SERV %SYBACKUP_SERVER% -CLIENT %SYBACKUP_CLIENT% -POL%SYBACKUP_POLICY% -SCHED Default-Application-Backup -STAT_FILE%STATUS_FILE%" >> .\syb_%DATABASE_NAME%_dump @REM echo go >>.\syb_%DATABASE_NAME%_dump @echo go >> c:\script\syb_%DATABASE_NAME%_dump @REM************************************************************************** @REM Log the isql command. Thisline may appear in NetBackup log files. @REM Do NOT replace"xxxxxxxx" with a user id or password. @REM************************************************************************** @REM setPRT_LINE=%SYBASE%%OCS_QUAL%\bin\isql -Uxxxxxxxx -Pxxxxxxxx-I%SYBASE%\ini\sql.ini -S%SYBSERVER% -i .\syb_%DATABASE_NAME%_dump setPRT_LINE=%SYBASE%%OCS_QUAL%\bin\isql -Uxxxxxxxx -Pxxxxxxxx-I%SYBASE%\ini\sql.ini -S%SYBSERVER% -i c:\script\syb_%DATABASE_NAME%_dump @echo %PRT_LINE% @REM************************************************************************** @REM Replace "sa" withyour Sybase server Administrator's login name. @REM Replace "manager"with your Sybase server Administrator's password. @REM************************************************************************** @REM setCMD_LINE=%SYBASE%%OCS_QUAL%\bin\isql -Usa -P -I%SYBASE%\ini\sql.ini -S%SYBSERVER%-i .\syb_%DATABASE_NAME%_dump setCMD_LINE=%SYBASE%%OCS_QUAL%\bin\isql -Usa -P -I%SYBASE%\ini\sql.ini-S%SYBSERVER% -i c:\script\syb_%DATABASE_NAME%_dump %CMD_LINE% @set RSTAT=%ERRORLEVEL% @set STATUS_MESSAGE=completedsuccessfully @REM ************************************************************************** @REM This script will return anerror status back to the NetBackup client if @REM the isql command fails. @REM************************************************************************** if %RSTAT% NEQ 0 setSTATUS_MESSGAGE=failed echo Execution of isql command%STATUS_MESSAGE% - exiting if exist"%STATUS_FILE%" echo %RSTAT% > "%STATUS_FILE%" @echo on @endlocal |