Tenemos una tabla con más de 150 millones de registros. Necesitamos limpiar/eliminar todas las filas. La operación de eliminación demoraría para siempre debido a que está escribiendo en t-logs y no podemos cambiar nuestro modelo de recuperación para toda la base de datos. Hemos probado la opción de tabla truncada.Eliminación masiva (truncar frente a eliminar)
Lo que nos dimos cuenta de que truncar desasigna las páginas de la tabla, y si no estoy equivocado las hace disponibles para su reutilización, pero no reduce automáticamente el DB. Entonces, si queremos reducir el tamaño de la base de datos, realmente tendríamos que ejecutar el comando shrink db luego de truncar la tabla.
¿Es este el procedimiento normal? ¿Hay algo de lo que necesitemos ser cuidadosos o conscientes, o hay mejores alternativas?
En SQL Server, 'caer table' no se puede utilizar si hay restricciones de clave externa. http://msdn.microsoft.com/en-us/library/ms173790.aspx – ProKiner
@prokiner tiene que tratar con referencias de claves externas sin importar qué, es decir, si las filas se eliminan, se reducen o se descartan, cualquier registro en otras tablas que hacen referencia a esta (s) fila (s) se deben eliminar primero o se debe eliminar la restricción. En algunos casos, esto puede ser "automatizado" con activadores ON DELETE, pero eso no es aplicable a más de 150 millones de bases de datos tipo. – mjv
@prokiner, debería haber sido más claro.Esos debían ser dos pensamientos separados, solo estaba señalando que el OP había declarado que habían probado el método truncado. He limpiado mi respuesta. –