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:
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
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):
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.