PC SOFT
ONLINE REPOSITORY
FOR WINDEVWEBDEV AND WINDEV MOBILE

Home |  | Sign in | English US
Tool Backup, Clone e Restauração de Bancos de dados HFSQL
Published by Boller
in the category Tools
New features



Description
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
none
none
User reviews
(To evaluate this resource, click 'Write a review')
racem85
slt , stp de m'envoyer cet outil a version 25 , merci.
Boller
MELHORIAS DO EXEMPLO DE BACKUP

FAVOR ENVIAR PARA ADRIANOBOLLER@GMAIL.COM

PARA ATUALIZAR O EXEMPLO AQUI DO REPOSITORIO