Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2006
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Copias de seguridad liberando BBDD

Hola,

tengo una BBDD que tiene varias tablas y algunas de estas crecen exponencialmente ya que recogen información de llamadas por teléfono y se reciben unas 4 por minuto. Como la aplicación no trabaja sobre un servidor sino sobre un PC normalito, esta se ralentiza. He pensado que sería bueno mantener la BBDD lo más limpia posible en cuanto a información necesaria con lo que me gustaría hacer lo siguiente:

Me gustaría cada mes poder sacar toda la información de las tablas que crecen de dicha manera respetando la información de las otras ( como operarios, clientes,...). Digamos que sería como hacer una foto de la BBDD en ese momento y limpiar con la que se está trabajando actualmente. Yo había pensado en hacer una copia del fichero de la BBDD en un directorio con el nombre del mes y lugo ejecutar sentencias SQL para limpiar la info de las tablas que necesito pero no sé si esta será la mejor manera. Ademas, uso MSSQLServer como servidor y creo que no me deja hacer una copia de un fichero de BBDD si está activo. Voy por buen camino? me aconsejan algo mejor?

Servidor = MSSQLServer.
BBDD = SQL.
Desarrollo = Delphi 2005.

Un saludo y gracias.
Responder Con Cita
  #2  
Antiguo 16-01-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La idea en sí no la veo equivocada; Tal vez algunos detalles...
Por ejemplo, yo no crearía una Base de Datos por mes, sino que mantendría dos Bases de Datos, una "activa" y otra de "histórico" con los datos que cada x tiempo mueves desde la otra.

Para "mover" los datos entra ambos Bases de Datos, puedes utilizar los DTS de SQL server. Puedes programar uno para que te "mueva" los datos de cierta antiguedad de unas tablas a otras.

Utiliza los JOB's de SQL Server para lanzar la ejecución del DTS cada x tiempo; Por ejemplo, programa un job nocturno para que te ejecute el DTS de "movimiento de datos" (normalmente cuando menos actividad hay en las Bases de datos).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 16-01-2006 a las 15:56:33.
Responder Con Cita
  #3  
Antiguo 17-01-2006
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Thumbs up

Muchas gracias, me ha gustado ese enfoque pero la parte del histórico creo que no me servira pues la información que he de guardar son las posiciones gps de varios coches cada vez que estos se desplazan una serie de metros preestablecidos (como 100) y el histórico va a ser consultado para ver las zonas por las que ha estado ese coche durante un espacio de tiempo. Con un histórico la cantidad de información sería ingente para el manejo sabiendo que la aplicación se ejecuta en un PC y no en un servidor dedicado. Por eso mi idea era ver la carga que producia una cosulta sobre un histórico para calcular cada cuánto hacer una copia (mes, semana,...).
Por otro lado no quiero que las copias queden registradas en MSSQLServer por lo que he pensado que los pasos a seguir para copiar serían:
1.- Crear BD de la semana.
2.- Usar DTS para la copia.
3.- Cerrar BD.
4.- Hacer un detach para "desregistrar" la BD.
y todo esto dejando la original abierta para que pueda seguir trabajando, cosa que no sé si es posible ya que a medida que copio registros de la original a la copia estos se deben eliminar de la original (como un cortar y pegar).
Para la parte de consultas quería seguir estos pasos :
1.- Para cada semana que ocupe el rango de fechas
2.- Hacemos un attach de la copia de la semana.
3.- Hacemos la consulta para sacar la información de interés.
4.- Cerramos la copia y hacemos el detach.
Bueno no sé si tendrás alguna idea de como poder seguir estos pasos. Yo seguro que no lo tengo muy claro pero estoy investigando y lo que vaya descubriendo lo iré comentado.

Un saludo y gracias.
Responder Con Cita
  #4  
Antiguo 17-01-2006
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Ok, por ahora ya tengo cosas como la parte del attach y detach que es la más sencilla. aquí pongo el código para quien le pueda interesar.
Código Delphi [-]
   ADOCommand1.CommandText := 'EXEC SP_ATTACH_DB ''COPIA'','''+GetCurrentDir()+'\data\'+dbName+'_Data.mdf'','''+GetCurrentDir()+'\data\'+dbName+'_Log  .ldf''';
   ADOCommand1.Execute;

Código Delphi [-]
   ADOCommand1.CommandText := 'EXEC SP_DETACH_DB ''COPIA'',''TRUE''';
   ADOCommand1.Execute;

Última edición por piccolo2101 fecha: 17-01-2006 a las 14:11:15.
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
Hacer Copias de Seguridad NeoWorld Tablas planas 5 12-01-2012 19:10:48
Copias de seguridad automatizadas Casimiro Notevi Seguridad 11 21-03-2005 08:53:53
Copias de seguridad con Delphi Jordy Firebird e Interbase 2 12-10-2004 20:12:36
Copias de seguridad para SQL Server Cabanyaler SQL 1 15-10-2003 19:17:59
copias de seguridad Irina Varios 1 09-06-2003 15:06:41


La franja horaria es GMT +2. Ahora son las 18:58:25.


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