| |||
borrar los datos de 1 bd cada cierto tiempo? Hola!!!...alguien me podria decir como puedo hacer esto: tengo una bd en SQL Sever 2000 en la cual se estan depositando ciertos datos cada segundo aproximadamente...pero necesito que solo los almacene por dia, es decir, que los guarde en mi tabla a partir de las 00:00:00 hasta las 23:59:59 del dia actual y q cuando este rango se haya cumplido borre todos los datos de la tabla y comience a guardar a aprtir de cero...se puede hacer esto...como???...de antemano gracias por la ayuda!!! |
| |||
Hola!!!...gracias por las sugerencias...pero en ambos casos me podrian decir en q parte o como manejo las intrucciones que me recomiendan??...por otro lado tengo otara duda: yo necesito que en el momento 23:59:59 termine gurde ese ultimo registro...borre el historico del día...(hablamos de 15 mil datos x 6 columnas aproximadamente)...y el momento 00:00:00 ya haya borrado todos los del dia anterior y comience a grabar los del nuevo dia...se puede hacer esto...cuanto tardaria en borrar los registros?...necesito manejar mi bd de esta forma...alguien me habia sugerido utilizar tablas temporales y generar una rutina...que me sugieren??...y como lo hago??...algun ejemplo??...gracias!!! |
| |||
Que tal Mary. Espero que le haya entendido a tu problema porque como que son muchas preguntas pero no muy concretas. Tu problema es que quieres eliminar los registros de una tabla ( llamemos tabla1) del día anterior y guardar el último registro también del día anterior. Me refiero al día anterior porque el proceso al menos se tardará un segundo, ya que eliminar 86,400 (60X60X24) registros generados en un día no creo que lo haga en menos tiempo. Para esto te recomiendo, que tabla1 tenga un campo Identity al que llamaremos IdRow, el cual nos ayudará a identificar el último registro del día. La tabla2 de igual estructura que tabla1 tiene los últimos registros de todos los días. Solo nos basamos en la fecha para no considerar la hora, de esta forma se consideran desde las 0 hrs hasta las 23:59:59. Para esto usamos la funcion CONVERT . Necesitamos crear el siguiente SP, el cual realiza las tareas mencionadas.
Código:
Ahora bien, el SP anterior lo tenemos que ejecutar todos los días a las 00:00:00, para esto hacemos lo siguiente(crearemos un Job):CREATE PROC dbo.Sp_ProcesoDiario AS BEGIN DECLARE @lintUltimoRegistro int DECLARE @ldtFechaDiaAnterior datetime SET @ldtFechaDiaAnterior = dateadd ( d, -1 , getdate() ) -- Estoy supondiendo que tu tabla deba de tener in Campo Identity, es muy necesario. -- El campo se llama IdRow --Obtenemos el IdRow del último registro del día anterior. LAS fECHAS LAS MANEJAMOS EN YYYYMMDD SELECT @lintUltimoRegistro = Max(IdRow) From tabla1 WHERE CONVERT (char(10), getdate() , 112) = CONVERT (char(10), @ldtFechaDiaAnterior , 112) -- Guadar último registro del día anterior. Tabla 1 tabla2 tienen la misma estructura. INSERT INTO tabla2 SELECT * FROM tabla1 WHERE IdRow = @lintUltimoRegistro --Finalmente borramos el resto de registros (del día anterior) de Tabla1. DELETE FROM Tabla1 WHERE CONVERT (char(10), getdate() , 112) = CONVERT (char(10), @ldtFechaDiaAnterior , 112) END En el Enterprice Manager de SQL Server en la seccion de Administración y finalmente Trabajos(job), creamos uno Nuevo. En la ficha General: Nombre. Dar algun nombre de Id. Propietario. Se recomienda que tenga rol de administrador. En la ficha Pasos: Dar click en Nuevo. Dar el Nombre del Paso. En Tipo seleccionar Secuencia de Comando TRansact-SQL Seleccionar la BD's. En el campo Comando, escribir lo siguiente: EXEC dbo.Sp_ProcesoDiario Y dar click en Aceptar. En la Ficha Programaciones: Dar click en Nueva programación. Dar el Nombre. Seleccionar Periódica. Seleccionar Cambiar. Seleccionar Sucede Diariamente. Seleccionar Cada 1 Dias. Sucede una vez a las 12:00:00 am Dar click en Aceptar. Dar click en Aceptar. Dar click en Aceptar. ---------------------- Espero que te sirva todo esto. Saludos. P.D. Mi SQL server esta en español, espero que el tuyo también para que sea un poco más fácil. |