Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-12-2008
Avatar de Blaster
Blaster Blaster is offline
Miembro
 
Registrado: jun 2008
Ubicación: Miami, USA
Posts: 12
Poder: 0
Blaster Va por buen camino
Question ¿Copia de seguridad de BD SQL 2000 desde la aplicación?

Saludos a Todos.

Yo utilizo Delphi 7, con acceso a Microsoft SQL 2000, para un software de hospedaje y reservaciones. Lo que deseo es poder realizar, desde la propia aplicación, una salva íntegra de TODA la base de datos. O sea, que yo pueda obtener y/o generar un archivo, exactamente como cuando uno da click derecho encima de la base de datos (empleando el SQL Server Enterprise Manager), y entonces escoge las opciones:

"Todas las Tareas / Copia de Seguridad de la base de datos... / etc, etc"

Luego de esto se obtiene un fichero sin extensión, con el que posteriormente se podría generar la base de datos, através de:

"Todas las Tareas / Restaurar base de datos... / etc, etc"

En fin, deseo poder obtener un archivo desde mi aplicación, el cual yo pueda salvar en el disco duro de mi PC, o en cualquier medio de almacenamiento externo. Algo adicional es que mi base de datos está localizada en otra PC conectada por red Lan (Intranet). Les agradecería su ayuda.

Gracias por adelantado.
Reinier.

Última edición por Blaster fecha: 30-12-2008 a las 20:10:44. Razón: imprecisiones
Responder Con Cita
  #2  
Antiguo 30-12-2008
DANY DANY is offline
Miembro
 
Registrado: nov 2003
Posts: 145
Poder: 21
DANY Va por buen camino
Debes hacer una busqueda en el foro, el tema ya se ha tratado.
Código Delphi [-]
var Consulta: TADOQuery ;
begin
  inherited;
  try
    Consulta := TADOQuery.Create(nil);
    Consulta.Connection := fDatos.ADOConnection ;

    Consulta.SQL.Add(' BACKUP DATABASE '+ nombreBaseDeatos+' TO DISK = '+QuotedStr(RutaBaseDeDatos));
    Consulta.ExecSQL ;


    MessageDlg('El backup se ha realizado con exito', mtInformation  , [mbOK], 0);

  Finally

    FreeAndNil(Consulta );
    

  End;
Va de ejemplo con un adoQuery.
Saludos.
Responder Con Cita
  #3  
Antiguo 02-01-2009
Avatar de Blaster
Blaster Blaster is offline
Miembro
 
Registrado: jun 2008
Ubicación: Miami, USA
Posts: 12
Poder: 0
Blaster Va por buen camino
Thumbs up Gracias por la ayuda

Saludos.

Me ha servido de gran ayuda. He redondeado la idea y al final hice lo siguiente:

Primero, ya sea desde la opción del Menú Principal de la aplicación o su correspondiente BarButton:

Código Delphi [-]
procedure TfrmPrincipal.SubMenuSalvarBaseDeDatosClick(Sender: TObject);
begin
  //Ante todo verifico si aun hay conexion con la BD
  if (HostalWare.ExisteConexionConLaBD = True)
    then
      begin
        //Ejecuto el procedimiento de Salvar Base de Datos
        SalvarBaseDeDatosHostalWare;
      end
        else
          begin
            MessageDlg('Se ha perdido la conexión con la base de datos.' + #13 + 'Inténtelo en otra ocasión', mtError, [mbOk], 0);
          end;
end;


Segundo, el procedimiento de la Interfaz Principal invoca a la Clase Madre Controladora:

Código Delphi [-]
procedure TfrmPrincipal.SalvarBaseDeDatosHostalWare;
begin
  //Ante todo verifico si aun hay conexion con la BD
  if (HostalWare.ExisteConexionConLaBD = True)
    then
      begin
        if (SaveDialogHostalWare.Execute)
          then
            begin
              //Salvo la base de datos en forma de fichero
              //HostalWare.SalvarBaseDeDatosHostalWare(QuotedStr(   SaveDialogHostalWare.FileName + '.BAK'   ));
              HostalWare.SalvarBaseDeDatosHostalWare(SaveDialogHostalWare.FileName + '.HBK'   );
            end;
      end
        else
          begin
            MessageDlg('Se ha perdido la conexión con la base de datos.' + #13 + 'Inténtelo en otra ocasión', mtError, [mbOk], 0);
          end;
end;

Luego, el procedimiento de la Clase Madre Controladora delega responsabilidades en la Clase Controladora correspondiente:

Código Delphi [-]
procedure TGestionCursistasHospedados.SalvarBaseDeDatosHostalWare(aCamino: String);
begin
  //Se invoca al procedimiento del Módulo correspondiente
  ModuloControlDelSistema.SalvarBaseDeDatosHostalWare(aCamino);
end;

Y esta es la que trabaja directamente con el procedimiento almacenado de la base de datos:

Código Delphi [-]
procedure TModuloControlDelSistema.SalvarBaseDeDatosHostalWare(aCamino: String);
begin
  //Se realiza la conexión con la BD
  DataModuleConexionGeneral.ADOConnectionGeneral.Connected:= True;
  DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.Active:= False;
  
  //Le pasamos los parámetros al StoredProc
  DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.Parameters.ParamByName('@vCamino').Value:= aCamino;

  //Aquí se hace la Salva de la BD
  //DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.Open;  //<- No genera datos de respuesta el StoredProc, por eso se omite esto.
  DataModuleControlDelSistema.spSalvarBaseDeDatosHostalWare.ExecProc;
end;

Y por último, el procedimiento almacenado ejecuta lo siguiente:

Código SQL [-]
CREATE PROCEDURE [dbo].[SalvarBaseDeDatosHostalWare] 
@vCamino varchar(1000)
AS

BACKUP DATABASE GCHWare TO DISK = @vCamino;

GO

Muchas gracias por la ayuda recibida.
Saludos.
Reinier.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copia de seguridad de mi BD jorgegetafe MySQL 6 15-01-2008 01:29:41
realizar copia de seguridad de bd interbase desde delphi ingabraham Firebird e Interbase 8 16-10-2007 18:02:01
Copia de tablas como copia de seguridad Mathom Varios 4 04-01-2006 09:19:57
Copia de seguridad y restablecer copia en paradox Sayuri Conexión con bases de datos 4 30-08-2005 17:08:37
Copia de Seguridad silviodp OOP 4 27-05-2004 15:18:53


La franja horaria es GMT +2. Ahora son las 22:08:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi