SQL Server - PROCEDIMIENTO PARA ELIMINAR 1'000000 REGISTROS

 
Vista:
sin imagen de perfil

PROCEDIMIENTO PARA ELIMINAR 1'000000 REGISTROS

Publicado por Edgar (2 intervenciones) el 14/09/2012 18:55:45
Estimados amigos del foro desde ya muchas gracias por su valiosa ayuda, tengo un problema.

En la empresa en la que trabajo existen varias tablas en varias bases de datos, muchas de ellas sobrepasan el 1'000.000 de registros, si pueden ayudarme con un procedimiento almacenado que me permita ir eliminando los regsitros pero controlando al mismo tiempo que el log no cresca para que no se llene el espacio en disco y podamos este procedimiento ejecutarlo las noches o en las madrugadas donde ya nadie esta trabajando
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PROCEDIMIENTO PARA ELIMINAR 1'000000 REGISTROS

Publicado por jams (93 intervenciones) el 14/09/2012 20:48:10
Hola, la informacion que proporcionas no describe exactamente las situacion, pero te sugiero pensar en reccuperar aquellos registros que deseas conservar (si es que es el caso y suponiendo que son los menos si estas tratando de eliminar aproximadamente 1000000 de registros), en una tabla digamos de paso, posteriormente borrar tu tabla con truncate table ()y despues regresar solo aquellos registros que guardaste en tu tabla de paso, de esta manera creo que estaras minimizando el tamaño de log






Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PROCEDIMIENTO PARA ELIMINAR 1'000000 REGISTROS

Publicado por Isaias (4558 intervenciones) el 14/09/2012 21:10:21
¿2005 o 2008?

while exists(select top 1 IdTabla from TablaRef with(nolock)
begin
begin tran
;with Cte (IdTabla) as (select top 1000 IdTabla from TablaRef order by IdTabla)
delete from Tabla where IdTabla in (select IdTabla from Cte)
;with Cte (IdTabla) as (select top 1000 IdTabla from TablaRef order by IdTabla)
delete from TablaRef where IdTabla in (select IdTabla from Cte)
commit
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar