|
Tool Backup, Clone e Restauração de Bancos de dados HFSQL
// Summary: <specify the procedure action> // Syntax: //Evento_Backup_Agendar (<Base_Atual>, <Destino_Backup>, <Agendar_Data_Hora>) // // Parameters: // Base_Atual: // Destino_Backup: <specify the role of Destino_Backup> // Agendar_Data_Hora: <specify the role of Agendar_Data_Hora> // Example: // <Specify a usage example> // PROCEDURE Evento_Backup_Agendar(Base_Atual, Destino_Backup, Agendar_Data_Hora)
HourGlass(True)
BaseAtual is string = Base_Atual
IF Base_Atual = "*" Base_Atual = "Todos" END
IF BaseAtual = "" THEN Info("Importante informar qual base ou * se for todos os bancos") END
IF Destino_Backup = "" THEN Info("Importante informar o diretório destino do backup","Exemplo: C:\HFSQLserver\backup\") END
IF bConectado = False THEN Error("Você deve primeiro se conectar a um servidor HFSQL.") RETURN END
IF Base_Atual <> "" AND BaseAtual <> "" AND Agendar_Data_Hora <> "" Backup is hBackupDescription Backup.Source = BaseAtual+"\*" // todas as tabelas Backup.Description = "Backup_"+BaseAtual+"_"+DateSys()+TimeSys() //nome do backup Backup.Compression = zipFormatZIP Backup.WithIndex = True Backup.Enabled = True Backup.Destination = Destino_Backup+"\"+Backup.Description Backup.SchedulingFull.Hour = Middle(Agendar_Data_Hora,9,2) Backup.SchedulingFull.Minute = Middle(Agendar_Data_Hora,11,2) Backup.SchedulingFull.DayOfMonth = Middle(Agendar_Data_Hora,7,2) bFazendoBackup = True res is int = 0 IF BaseAtual <> "*" AND Destino_Backup <> "" res = HBackup(myconnect, Backup) // Verifica se o backup foi finalizado ou não, caso contrário aguardamos IF res <> 0 THEN sEtat = ExtractString(HInfoBackup(myconnect), 6) WHILE Val(sEtat) = 0 Multitask(-2) sEtat = ExtractString(HInfoBackup(myconnect), 6) END ELSE Error(StringBuild("A cópia de segurança terminou de forma anormal: % 1",HErrorInfo())) END IF res = 0 OR fDirectoryExist(Destino_Backup)= False Info("Não criou o backup, algo deu errado: ") END IF res = 0 THEN Info(ErrorInfo(),HErrorInfo()) ELSE Info("Backup realizado com sucesso") Evento_Listar_Backups(Destino_Backup) END ELSE x is int Banco is string = "" ListDatabase is string = HListDatabase(myconnect,hLstNormal) IF StringCount(ListDatabase,TAB,IgnoreCase) = 0 THEN ListDatabase = ListDatabase + TAB END TotalBases is int = StringCount(ListDatabase,TAB,IgnoreCase) +1 LOOP(TotalBases) x++ res = 0 Banco = NoSpace(ExtractString(ListDatabase,x,TAB,FromBeginning)) Trace(Banco) Backup.Source = Banco+"\*" // todas as tabelas Backup.Description = "Backup_"+Banco+"_"+DateSys()+TimeSys() //nome do backup Backup.Compression = zipFormatZIP Backup.WithIndex = True Backup.Enabled = True Backup.Destination = Destino_Backup+"\"+Backup.Description Backup.SchedulingFull.Hour = Middle(Agendar_Data_Hora,9,2) Backup.SchedulingFull.Minute = Middle(Agendar_Data_Hora,11,2) Backup.SchedulingFull.DayOfMonth = Middle(Agendar_Data_Hora,7,2) res = HBackup(myconnect, Backup) // Verifica se o backup foi finalizado ou não, caso contrário aguardamos IF res <> 0 THEN sEtat = ExtractString(HInfoBackup(myconnect), 6) WHILE Val(sEtat) = 0 Multitask(-2) sEtat = ExtractString(HInfoBackup(myconnect), 6) END ELSE Error(StringBuild("A cópia de segurança terminou de forma anormal: % 1",HErrorInfo())) END IF res = 0 OR fDirectoryExist(Destino_Backup) = False THEN Info("Não criou o backup, algo deu errado: ",res,ErrorInfo(),HErrorInfo()) END END IF res = 0 // SE ZERO NAO CRIOU O BKP Info(res,ErrorInfo(),HErrorInfo()) ELSE Info("Backup realizado com sucesso") Evento_Listar_Backups(Destino_Backup) Info(res,ErrorInfo(),HErrorInfo()) END END ELSE Info("Informe uma Base clicando sobre ela e uma data e hora para executar") END
bFazendoBackup = False
HourGlass(False)
//-------------------------------------------------
// Summary: <specify the procedure action> // Syntax: //Evento_Backup_Agora (<Base_Atual>) // // Parameters: // Base_Atual: // Example: // <Specify a usage example> // // Usuario: <specify the role of Usuario> PROCEDURE Evento_Backup_Agora(Base_Atual, Destino_Backup)
HourGlass(True)
BaseAtual is string = Base_Atual
IF Base_Atual = "*" Base_Atual = "Todos" END
IF BaseAtual = "" THEN Info("Importante informar qual base ou * se for todos os bancos") END
IF Destino_Backup = "" THEN Info("Importante informar o diretório destino do backup","Exemplo: C:\HFSQLserver\backup\") END
IF bConectado = False THEN Error("Você deve primeiro se conectar a um servidor HFSQL.") RETURN END
IF Base_Atual <> "" AND BaseAtual <> "" Backup is hBackupDescription Backup.Source = BaseAtual+"\*" // todas as tabelas Backup.Description = "Backup_"+BaseAtual+"_"+DateSys()+TimeSys() //nome do backup Backup.Compression = zipFormatZIP Backup.WithIndex = True Backup.Enabled = True Backup.Destination = Destino_Backup+"\"+Backup.Description bFazendoBackup = True res is int = 0 IF BaseAtual <> "*" AND Destino_Backup <> "" res = HBackup(myconnect, Backup) // Verifica se o backup foi finalizado ou não, caso contrário aguardamos IF res <> 0 THEN sEtat = ExtractString(HInfoBackup(myconnect), 6) WHILE Val(sEtat) = 0 Multitask(-2) sEtat = ExtractString(HInfoBackup(myconnect), 6) END ELSE Error(StringBuild("A cópia de segurança terminou de forma anormal: % 1",HErrorInfo())) END IF res = 0 OR fDirectoryExist(Destino_Backup)= False Info("Não criou o backup, algo deu errado: ") END IF res = 0 THEN Info(ErrorInfo(),HErrorInfo()) ELSE Info("Backup realizado com sucesso") Evento_Listar_Backups(Destino_Backup) END ELSE x is int Banco is string = "" ListDatabase is string = HListDatabase(myconnect,hLstNormal) IF StringCount(ListDatabase,TAB,IgnoreCase) = 0 THEN ListDatabase = ListDatabase + TAB END TotalBases is int = StringCount(ListDatabase,TAB,IgnoreCase) +1 LOOP(TotalBases) x++ res = 0 Banco = NoSpace(ExtractString(ListDatabase,x,TAB,FromBeginning)) Trace(Banco) Backup.Source = Banco+"\*" // todas as tabelas Backup.Description = "Backup_"+Banco+"_"+DateSys()+TimeSys() //nome do backup Backup.Compression = zipFormatZIP Backup.WithIndex = True Backup.Enabled = True Backup.Destination = Destino_Backup+"\"+Backup.Description
res = HBackup(myconnect, Backup) // Verifica se o backup foi finalizado ou não, caso contrário aguardamos IF res <> 0 THEN sEtat = ExtractString(HInfoBackup(myconnect), 6) WHILE Val(sEtat) = 0 Multitask(-2) sEtat = ExtractString(HInfoBackup(myconnect), 6) END ELSE Error(StringBuild("A cópia de segurança terminou de forma anormal: % 1",HErrorInfo())) END IF res = 0 OR fDirectoryExist(Destino_Backup) = False THEN Info("Não criou o backup, algo deu errado: ",res,ErrorInfo(),HErrorInfo()) END END IF res = 0 // SE ZERO NAO CRIOU O BKP Info(res,ErrorInfo(),HErrorInfo()) ELSE Info("Backup realizado com sucesso") Evento_Listar_Backups(Destino_Backup) Info(res,ErrorInfo(),HErrorInfo()) END END ELSE Info("Informe uma Base clicando sobre ela") END
bFazendoBackup = False
HourGlass(False)
//-----------------------------------------------------------------------
// Summary: <specify the procedure action> // Syntax: //Evento_Conectar (<Server_Ip_DNS>, <Porta>, <Usuario>, <Senha>) // // Parameters: // Server_Ip_DNS: // Porta: <specify the role of EDT_Porta> // Usuario: <specify the role of EDT_Usuário> // Senha: <specify the role of EDT_Senha> // Example: // <Specify a usage example> // PROCEDURE Evento_Conectar(Server_Ip_DNS,Porta,Base,Usuario,Senha)
IF Server_Ip_DNS <> "" AND Porta <> "" AND Usuario <> "" AND Senha <> "" THEN myconnect..Provider = hAccessHFClientServer myconnect..Server = Server_Ip_DNS myconnect..Source = Server_Ip_DNS +":"+ Porta myconnect..User = Usuario myconnect..Password = Senha myconnect..Database = Base myconnect..Access = hOReadWrite myconnect.CursorOptions = hClientCursor IF HOpenConnection(myconnect) = True THEN IF HChangeConnection("*",myconnect) = True THEN bConectado = True ToastDisplay("Conexão com sucesso",toastLong,vaMiddle,haCenter) Evento_Listar_Bases() GR_CAMPOS_BACKUP..State = Active ELSE Error(ErrorInfo(),HErrorInfo()) END ELSE Error(ErrorInfo(),HErrorInfo()) END
END
//---------------------------------------------------------------------------------------------
// Summary: <specify the procedure action> // Syntax: // Evento_Desconectar () // // Parameters: // None // Return value: // None // // Example: // <Specify a usage example> // PROCEDURE Evento_Desconectar()
GR_CAMPOS_BACKUP..State = Grayed
HCloseConnection(myconnect)
TableDeleteAll(TABLE_Bancos)
TableDisplay(TABLE_Bancos,taInit)
bConectado = False
//------------------------------------------------------------------------
// Summary: <specify the procedure action> // Syntax: //Evento_Listar_Backups (<Diretorio_Backup>) // // Parameters: // Diretorio_Backup: // Example: // <Specify a usage example> // PROCEDURE Evento_Listar_Backups(Diretorio_Backup)
TableDeleteAll(TABLE_Diretorio_Backup)
x is int
Nome_Backup is string = ""
listaArquivos is string = fListFile(Diretorio_Backup+"\*.zip",frRecursive)
IF StringCount(listaArquivos,CR,IgnoreCase)=0 THEN listaArquivos = listaArquivos+CR END
TotalBackups is int = StringCount(listaArquivos,CR,IgnoreCase) +1
Trace(TotalBackups)
LOOP(TotalBackups) x++ Nome_Backup = NoSpace(ExtractString(listaArquivos,x,CR,FromBeginning)) IF Nome_Backup <> "" THEN Trace(Nome_Backup) TableAdd(TABLE_Diretorio_Backup,x +TAB+ Nome_Backup) END END
Trace("Total de Backups: "+x)
TableDisplay(TABLE_Diretorio_Backup,taReExecuteQuery)
TableDisplay(TABLE_Diretorio_Backup,taInit)
//-------------------------------------------------------------------------
// Summary: <specify the procedure action> // Syntax: //Evento_Listar_Bases () // // Parameters: // None // Example: // <Specify a usage example> // // Return value: PROCEDURE Evento_Listar_Bases()
TableDeleteAll(TABLE_Bancos)
TableDeleteAll(TABLE_Diretorio_Backup)
x is int
Banco is string = ""
ListDatabase is string = HListDatabase(myconnect,hLstNormal)
IF StringCount(ListDatabase,TAB,IgnoreCase)=0 THEN ListDatabase = ListDatabase+TAB END
TotalBases is int = StringCount(ListDatabase,TAB,IgnoreCase) +1
LOOP(TotalBases) x++ Banco = NoSpace(ExtractString(ListDatabase,x,TAB,FromBeginning)) TableAdd(TABLE_Bancos,Banco) END
TableDisplay(TABLE_Bancos,taReExecuteQuery)
TableDisplay(TABLE_Bancos,taInit)
//----------------------------------------------------------------------------
// Summary: <specify the procedure action> // Syntax: //Evento_Progress () // // Parameters: // None // Example: // <Specify a usage example> //// Automatic procedure: // The procedure is executed manually, during a call in the code // It will be run in a secure thread (without calling ThreadExecute), without using HFSQL // It will be repeated in a loop, with a timeout set to 1 second between each call //
PROCEDURE Evento_Progress()
IF bFazendoBackup = True THEN IF PROGBAR_01 > 100 THEN PROGBAR_01 = 0 END PROGBAR_01 += 10 END
//-----------------------------------------------------------------------
// Summary: <specify the procedure action> // Syntax: // Evento_Restaurar_Duplicar () // // Parameters: // None // Return value: // None // // Example: // <Specify a usage example> // PROCEDURE Evento_Restaurar_Duplicar()
//1 : Sim //2 : Não SWITCH Dialog("Deseja restaurar o Backup?") // Sim CASE 1 nID is int Base_Atual_Restaurado is string = EDT_Base_Atual +"_Copia_"+DateSys()+TimeSys() IF EDT_Diretório_Destino ~= "" THEN Error("Você deve primeiro especificar um diretório temporário.") RETURN END IF Base_Atual_Restaurado ~= "" THEN Error("Você deve primeiro indicar o nome do banco de dados duplicado.") RETURN END IF bConectado = False THEN Error("Você deve primeiro se conectar a um servidor HFSQL.") RETURN END PROGBAR_01.Visible = True nID = HBackup(myconnect,EDT_Base_Atual+"/*",EDT_Diretório_Destino,True,"Copia"+ DateSys(),PROGBAR_01) IF nID <> 0 THEN sEtat = ExtractString(HInfoBackup(myconnect), 6) WHILE Val(sEtat) = 0 Multitask(-2) sEtat = ExtractString(HInfoBackup(myconnect), 6) END ELSE Error(StringBuild("A cópia de segurança terminou de forma anormal: % 1",HErrorInfo())) END // Duplication de la base IF Val(sEtat) = 1 THEN HRestoreBackup(myconnect,EDT_Base_Atual+"/"+nID,EDT_Base_Atual,Base_Atual_Restaurado,PROGBAR_01) IF ErrorOccurred THEN Error(StringBuild("Não foi possível duplicar a base: % 1",ErrorInfo())) ELSE Info("Duplicação concluída") END // Re-Alimentation de la liste des bases Evento_Listar_Bases() ELSE Error(StringBuild("A cópia de segurança terminou de forma anormal: % 1",HErrorInfo())) END // Não CASE 2 END
CASE ERROR: Error(ErrorInfo(errMessage)) CASE EXCEPTION: Error(ExceptionInfo(errMessage))
|
| |
| |
| Illustrations, screen shots |
|
| |
(To evaluate this resource, click 'Write a review') |
| | | |
No review or comment? Be the first one! |
slt , stp de m'envoyer cet outil a version 25 , merci. |
| MELHORIAS DO EXEMPLO DE BACKUP
FAVOR ENVIAR PARA ADRIANOBOLLER@GMAIL.COM
PARA ATUALIZAR O EXEMPLO AQUI DO REPOSITORIO |
| | |
|