1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- $PBExportHeader$f_backup_db.srf
- global type f_backup_db from function_object
- end type
- forward prototypes
- global function integer f_backup_db (boolean arg_winrar, string arg_database, string arg_filename, ref string arg_msg)
- end prototypes
- global function integer f_backup_db (boolean arg_winrar, string arg_database, string arg_filename, ref string arg_msg);//备份数据库
- //f_backup_db(arg_winrar,arg_database,arg_filename,arg_msg)
- Int rslt = 1
- String comm
- IF FileExists(arg_filename) THEN
- rslt = 0
- arg_msg = '备份文件已经存在,请重新填写备份文件名!'
- GOTO ext
- END IF
- comm = 'BACKUP DATABASE '+arg_database+' TO DISK= ~''+arg_filename+'~' with init '
- Transaction ls_transsqlca
- ls_transsqlca = CREATE Transaction
- ls_transsqlca.DBMS = sqlca.DBMS
- ls_transsqlca.Database = 'master'
- ls_transsqlca.UserID = sqlca.UserID
- ls_transsqlca.DBPass = sqlca.DBPass
- ls_transsqlca.LogID = sqlca.LogID
- ls_transsqlca.LogPass = sqlca.LogPass
- ls_transsqlca.ServerName = sqlca.ServerName
- ls_transsqlca.DBParm = sqlca.DBParm
- IF ls_transsqlca.Database = '' OR ls_transsqlca.ServerName = '' THEN
- rslt = 0
- arg_msg = "连接数据管理库失败!"
- GOTO ext
- END IF
- w_sys_wait.Show()
- CONNECT USING ls_transsqlca;
- ls_transsqlca.AutoCommit = TRUE
- EXECUTE IMMEDIATE :comm USING ls_transsqlca;
- w_sys_wait.Hide()
- IF ls_transsqlca.SQLCode <> 0 THEN
- arg_msg = '备份操作失败>'+ls_transsqlca.SQLErrText
- ROLLBACK USING ls_transsqlca;
- rslt = 0
- GOTO ext
- END IF
- IF arg_winrar THEN
- String rar_comm //rar命令
- String rar_path
- String rar_filename
-
- rar_filename = Reverse(Mid(Reverse ( arg_filename ),Pos( Reverse ( arg_filename ) ,'.') + 1,Pos( Reverse ( arg_filename ) ,'\') - Pos( Reverse ( arg_filename ) ,'.') - 1 )) + ".rar"
-
-
- rar_path = Left(arg_filename,Len(arg_filename) - Pos( Reverse ( arg_filename ) ,'\') + 1 )
- rar_filename = rar_path + rar_filename
-
-
- rar_comm = sys_option_winrar_path + 'winrar a -p -df -o+ -ep "' + rar_filename +'" "'+ arg_filename + '"'
-
- IF Run(rar_comm) <> 1 THEN
- ROLLBACK USING ls_transsqlca;
- IF FileExists ( arg_filename ) THEN FileDelete ( arg_filename )
- rslt = 0
- arg_msg = '备份操作失败>压缩文件失败'
- GOTO ext
- END IF
- END IF
- COMMIT USING ls_transsqlca;
- arg_msg = '备份操作成功!'
- ext:
- DESTROY ls_transsqlca
- RETURN rslt
- end function
|