Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Firebird y copia de seguridad
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Firebird y copia de seguridad Responder citando

Necesito que me echéis una mano. He descargado, no sé de donde, un fichero llamado fibs202source.zip y no soy capaz de hacerlo funcionar. Ya he visto que son fuentes de pascal, pero al abrir los ficheros faltan algunos componentes. ¿Os suena a alguno este fichero? Gracias por delante.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

hola cesar, para las copias de seguridad yo utilice los componentes ibbackupservice y el ibrestore service. si quieres te pongo el codigo aqui si quieres probarlo.

un saludo!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¿Todavía te dura la resaca de piraguas que me cambias el nombre? Very Happy

Si lo tienes, y no te importa, cuélgalo. Me harás un favor.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Esperamos que esta >parte< pueda servirte, aun que he visto que ya tienes información sobre los componentes antes mencionados en este >post<

Saludos!!

Haaa! por cierto los archivos a los cuales te refieres se encuentran en la siguiente pagina (>aqui<)
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias César. ¡Eres un monstruo!
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

jajja, ostras perdona angel es que hoy tengo un gripazo de la leche y no se por donde ando, aqui os dejo lo que tengo

esto es el back up :

Código:

 AnsiString ans_fecha;
        TDate fecha=Now();
        String sfecha= DateToStr(Now());
        ans_fecha = AnsiString(sfecha.c_str());

        //ShowMessage(AnsiString(sfecha));
        fecha=fecha.FormatString("dd/mm/yyyy");

         String d,m,a;
                d=sfecha.SubString(1,2);
                m=sfecha.SubString(4,2);
                a=sfecha.SubString(9,2);
                String _fecha=d+"_"+m+"_"+a;


        IBBackupService1->ServerName="Local Server";
        IBBackupService1->LoginPrompt=False;
        //IBBackupService1->Active = True;
        IBBackupService1->Params->Add("user_name=sysdba");
        IBBackupService1->Params->Add("password=masterkey");
        IBBackupService1->Active = True;


        try
        {
        IBBackupService1->Verbose = True;
        TBackupOption IgnoreLimbo, NonTransportable;
        IBBackupService1->Options<<IgnoreLimbo<<NonTransportable>DatabaseName =ExtractFilePath(Application->ExeName)+"\HOBBYSOFTBD.GDB";
        IBBackupService1->BackupFile->Add(ExtractFilePath(Application->ExeName)+"\copias_de_seguridad\\"+_fecha+".gbk");
        ModuloSQL->IBTransaction1->Active=true;
        ModuloSQL->IBTransaction1->Commit();
        IBBackupService1->ServiceStart();

             while (!(IBBackupService1->Eof))
                {
                BackupMemo->Lines->Add(IBBackupService1->GetNextLine());
                }
        }
        __finally
        {
        IBBackupService1->Active = false;
        }
        ShowMessage("Copia de seguridad creada corectamente en la ruta "+ ExtractFilePath(Application->ExeName)+"\copias_de_seguridad\\"+_fecha+".gbk");
        this->Close();


y esto el restore

Código:


 try
        {

        //
        ModuloSQL->SQL1->Close();
        ModuloSQL->SQL2->Close();
       ModuloSQL->IBTransaction1->Active=true;
       ModuloSQL->IBTransaction1->Commit();
        ModuloSQL->IBDatabase1->CloseDataSets();
        ModuloSQL->IBDatabase1->Close();
       
        IBRestoreService1->ServerName="Local Server";
        IBRestoreService1->LoginPrompt=False;
        IBRestoreService1->Params->Add("user_name=sysdba");
        IBRestoreService1->Params->Add("password=masterkey");
        IBRestoreService1->Active=True;

        IBRestoreService1->Verbose=True;
        TRestoreOption Create, UseAllSpace;

        //ModuloSQL->IBDatabase1->Connected=false;
       



        //EXEC SQL;
        //commit realase;

        IBRestoreService1->Options<< Replace<<UseAllSpace>PageBuffers=3000;
        IBRestoreService1->PageSize=4096;
        OpenDialog1->Execute();
        if(OpenDialog1->FileName.IsEmpty())
         return;
        IBRestoreService1->BackupFile->Add(OpenDialog1->FileName);

        IBRestoreService1->DatabaseName->Add(ExtractFilePath(Application->ExeName)+"\HOBBYSOFTBD.GDB");

        IBRestoreService1->ServiceStart();

                while (!(IBRestoreService1->Eof))
                {
                RestoreMemo->Lines->Add(IBRestoreService1->GetNextLine());
                }
        }
        __finally
        {
         IBRestoreService1->Active= False;
         ModuloSQL->IBDatabase1->DatabaseName=ExtractFilePath(Application->ExeName)+"\HOBBYSOFTBD.GDB";
         ModuloSQL->IBDatabase1->Open();

        }
        ShowMessage("Copia de Seguridad Restaurada satisfactoriamente");
        this->Close();


bueno quizas el codigo este un poco chapucero por que tuve que estar ravilando con el bastante pero asi funcionaba.

un saludo!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias rivo. Que te mejores de la gripe. Entre tu respuesta y la de César sacaré adelante el problema. Una cosa: ¿Por qué no simplificas el backup y eliminas conversiones?
Código:
TBackupOptions oBackup;
oBackup.Clear();
oBackup << IgnoreLimbo <<NonTransportable>ServerName = "Local Server";
IBBackup->LoginPrompt = false;
IBBackup->Params->Add("user_name = sysdba");
IBBackup->Params->Add("password = masterkey");
IBBackup->Active = true;

try
{
     IBBackup->Verbose = true;
     IBBackup->Options = oBackup;
     IBBackup->DatabaseName = Asociacion->DatabaseName;
     IBBackup->BackupFile->Add(ExtractFilePath(Application->ExeName) + "\\copia_de_seguridad\\" + Date().FormatString("yyyymmd") + ".gbk");
     IBBackup->ServiceStart();

     while (!IBBackup->Eof)
     {
          Barra->Caption = "Backup » " + Trim(cCadena.SubString(cCadena.Pos(":") + 1, cCadena.Length()));
     }
}

__finally
{
     IBBackup->Active = false;
}
[/code]
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)


Ultima edición por Angel el Mar 14 Ago, 2007 10:28 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

si es mas sencillo, pero cuando lo hice pensaba que el metodo formatstring devolvia objeto tipo date (al compilar no daba error) y pero luego al utilizarlo me daba error, entonces para solucionarlo utilice eso, pero mas adelante me di cuenta que formatstring devolvia un ansistring, pero bueno como lo otro me funcionaba bien lo deje como taba. Rolling Eyes

un saludo!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Es evidente que mientras yo editaba mi último mensaje, rivo estaba escribiendo el suyo. ¡Cosas de internet!

Me esta ocurriendo una cosa curiosa al ejecutar ambos procesos: cuando llego a activar el elemento, por ejemplo IBBackup->Active = true, me da un error SPB Constant Unknow y no sé por donde pillarlo. ¿Alguna idea?

El código que estoy usando es este:
Código:
void __fastcall TfSocio::BackupClick(TObject *Sender)
{
     TBackupOptions oBackup;
     oBackup.Clear();
     oBackup << IgnoreLimbo <<NonTransportable>ServerName = "Local Server";
     IBBackup->LoginPrompt = false;
     IBBackup->Params->Add("user_name = sysdba");
     IBBackup->Params->Add("password = masterkey");
     IBBackup->Verbose = true;
     IBBackup->Options = oBackup;
     IBBackup->Active = true;

     Barra->OptionsText = toCaption;
     try
     {
          IBBackup->DatabaseName = Asociacion->DatabaseName;
          IBBackup->BackupFile->Add(ExtractFilePath(Application->ExeName) + "\\Seguridad\\" + Date().FormatString("yyyymmd") + ".gbk");
          tAsociacion->Active = true;
          tAsociacion->Commit();
          IBBackup->ServiceStart();

          while (!IBBackup->Eof)
          {
               cCadena = IBBackup->GetNextLine();
               Barra->Caption = "Backup » " + Trim(cCadena.SubString(cCadena.Pos(":") + 1, cCadena.Length()));
          }
     }

     __finally
     {
          IBBackup->Active = false;
     }
}

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Generalmente este error se presenta, cuando "alguien" esta usando la base de datos y tiene bloqueado a un registro, en algunos casos también se presenta cuando la base de datos, que estas a punto de restaurar o de crearle un Backup, se encuentra dañada.

por ejemplo para generar un Backup, realizo la siguiente rutina y aun no me a marcado errores.

Código:

         this->ibBackupBase->DatabaseName = RutaDeLaBase;
         this->ibBackupBase->BackupFile->Add(NombreRespaldo);
         this->ibBackupBase->Attach();
         this->ibBackupBase->Active = true;// activamos el servicio
         try
         {
            this->ibBackupBase->ServiceStart();// iniciamos la copia de seguridad
            Memo1->Clear();
            Memo1->Lines->Add("----------------------------------");
            Memo1->Lines->Add(" -       Inicio del Proceso      -");
            Memo1->Lines->Add("----------------------------------");
            while(!this->ibBackupBase->Eof)
            {
               Application->ProcessMessages();
               Memo1->Lines->Add(this->ibBackupBase->GetNextLine());
            }
            Memo1->Lines->Add("-----------------------------------");
            Memo1->Lines->Add("-   Proceso Realizado Con Exito!! -");
            Memo1->Lines->Add("-----------------------------------");
         }
         catch(...)
         {
            Memo1->Lines->Add("------------------------------------");
            Memo1->Lines->Add("- Error en el Proceso, Verifique!! -");
            Memo1->Lines->Add("------------------------------------");

         }
         this->ibBackupBase->Active = false;// Desactivamos el servicio
         this->ibBackupBase->DatabaseName = "";
         this->ibBackupBase->BackupFile->Clear();


y para restaurar la base de datos desde un archivo
el siguiente codigo

Código:

         this->ibRestoreBase->DatabaseName->Add(RutaDeLaBase); // nombre de la base
         this->ibRestoreBase->BackupFile->Add(NombreRespaldo); // archivo backup

         this->ibRestoreBase->Options << Replace; // Añadimos la opcion de reemplazar archivo de BDD
         this->ibRestoreBase->Attach();
         this->ibRestoreBase->Active = true; // Activamos el servicio

         try
         {
            this->ibRestoreBase->ServiceStart(); // Iniciamos la restauracion
            Memo1->Clear();
            Memo1->Lines->Add("----------------------------------");
            Memo1->Lines->Add(" -       Inicio del Proceso      -");
            Memo1->Lines->Add("----------------------------------");
            while(!this->ibRestoreBase->Eof)
            {
               Application->ProcessMessages();
               Memo1->Lines->Add(this->ibRestoreBase->GetNextLine());
            }
            Memo1->Lines->Add("-----------------------------------");
            Memo1->Lines->Add("-   Proceso Realizado Con Exito!! -");
            Memo1->Lines->Add("-----------------------------------");
         }
         catch(...)
         {
            Memo1->Lines->Add("------------------------------------");
            Memo1->Lines->Add("- Error en el Proceso, Verifique!! -");
            Memo1->Lines->Add("------------------------------------");
            
         }
         this->ibRestoreBase->Active = false;// Desactivamos el servicio
         this->ibRestoreBase->DatabaseName->Clear();
         this->ibRestoreBase->BackupFile->Clear();


Aun asi, verifica que tu base de datos no se haya dañado con alguna restauracion. pero lo del mensaje es por que "alguien" sigue usando la base de datos, cuando tu estas haciendo un respaldo
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias César. He aislado parte del problema, y me ha sorprendido. El mensaje de error SPB... se produce si pongo en el código las líneas:
Código:
 IBBackup->LoginPrompt = false;
 IBBackup->Params->Add("user_name = sysdba");
 IBBackup->Params->Add("password = masterkey");

En el momento que las quito, evidentemente me pide usuario y clave pero no da error. No lo entiendo.

Otra cosa. Buscando como funcionan estos elementos, encontré un foro alemán en que añadía unas líneas:
Código:
IBBackupService1->BackupFile->Add("c:\\temp\\e1.gbk = 2048");
IBBackupService1->BackupFile->Add("c:\\temp\\e2.gbk = 4096");
IBBackupService1->BackupFile->Add("c:\\temp\\e3.gbk ");

Y, evidentemente, se generaban esos tres ficheros pero no acabo de entender para que valen. Embarassed
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

No muy entiendo Aleman (jeje ), pero las tres lineas que usas, son para definir 3 archivos de respaldo de la misma base de datos aun que con diferentes tamaños de pagina, la primera con 2048, la segunda con 4096 y la tercera con los parametros por default que tiene la base de datos.

Con respecto a las líneas que te marcan en el codigo, intenta establecer dentro de tu componente IBBackup los datos de la cuenta y contraseña
presionando doble click en el mismo, generalmente lo uso asi y no he tenido problemas.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

eso de paginas me suena a sistemas operativos y es la que me queda pa acabar la carrera (dejame tocar madera...).

yo es qeu lo del ibbackservice y encontre fragmentos por el foro y luego fui adaptando y probando hasta que me funciono.

eso si cuando vayas a probar si funciona el backup no tengas el firebird abierto, por que sino te dara un error de que no se puede copiar, ya que esta el firebird conectada a ella, este fue un falo que me daba a mi y me costo un rato darme cuenta de ello, jajaja.

un saludo!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

rivo escribió:
eso si cuando vayas a probar si funciona el backup no tengas el firebird abierto, por que sino te dara un error de que no se puede copiar, ya que esta el firebird conectada a ella, este fue un falo que me daba a mi y me costo un rato darme cuenta de ello, jajaja.

Imagino que te refieres a tenr la base de datos cerrada, ¿no?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

si Rolling Eyes
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.