Borrado Masivo de datos

Pedro
25 de Octubre del 2005
Hola, estoy intentando borrar 9 millones de registros de una tabla con una condici�n del tipo DELETE ... from... WHERE y he apreciado que se vuelcan datos al tempdb dejandome sin espacio en el disco duro. �Es normal esto? Se supone que con que se cree la informacion en el registro de transacciones deber�a llegar �no? �Hay alguna forma de evitar que esto ocurra?

Muchas Gracias

monky
25 de Octubre del 2005
Nunca es conveniente procesar en un solo delete borrados masivos ; puesto que lo primero que se llena es el area de log.
El otro problema es el largo tiempo que toma este tipo de eliminaciones masivas de filas; lockeando por todo ese tiempo a la tabla en cuestion.
Te aconsejo que hagas un batch en donde las transacciones las vayas acortando; es decir anda haciendo deletes con where en donde vayas poniendo una condicion de eliminacion; luego por cada delete realizas un commit work para cerrar la transaccion y luego vas con la segunda transaccion, etc, etc, con esto te aseguro que no tendras ninguno de los problemas que reportas.
Yo he borrado con este sistema hasta 20 millones de filas de una tabla.
Al terminar de eliminar no te olvides de realizar un UPDATE STATISTICS

monky
25 de Octubre del 2005
perdona no me di cuenta que si haces delete con where.... si sigue fallando es porque tu area de log no es lo suficientemente grande.... tienes 2 caminos para evitar que ocurra el problema... el primero es darle en forma fisica mas espacio para el area de log y el segundo es seguir acotando el where para que vaya eliminando menos cantidad de filas por cada delete..... igual debe poner el commit al final de un delete antes de empezar con otro