Professional Documents
Culture Documents
1 . Introduccin 2 . Tipos de ficheros 3 . Modo de recuperacin 4 . Funcionamiento del fichero de Log 5 . Reducir el fichero de Log . !lan " # . $na solucin definiti%a & . 'ota final
Introduccin
(e manera recurrente aparece una pregunta en los grupos de noticias ) en los foros so"re el tama*o del fichero de transacciones de una "ase de datos del +,L +er%er. -l pro"lema es .ue el fichero Log crece indefinidamente hasta hacerse tan grande .ue se come todo el disco duro/ llegando en el peor de los casos a llenarlo con el consiguiente error0 Error: 1105, Severity: 17, State: 2: Could not allocate space for the transaction log for database ' i!ase' because the device is full" #u$p the log or enlarge the device to create $ore space" Realmente este error no es un pro"lema del +,L +er%er. -s el comportamiento normal del ser%idor cuando no tenemos en cuenta .ue en toda "ase de datos ha) .ue reali1ar una serie de tareas de mantenimiento para .ue todo funcione correctamente. Lo .ue nos est2 indicando es .ue el fichero de Log no puede crecer m2s/ "ien sea por.ue le hemos limitado el tama*o o por.ue hemos llenado todo el disco/ ) si el ser%idor no puede escri"ir en el fichero de Log no puede continuar tra"a3ando. !ero %amos a %er un poco como funciona el almacenamiento de datos en el +,L +er%er ) .ue es eso del fichero de transacciones 4o de Log5 para entender como podemos solucionar este error/ ) lo .ue es m2s importante/ como e%itarlo.
Tipos de ficheros
-n toda "ase de datos de +,L +er%er ha) al menos dos ficheros. $no es el fichero de "ase de datos donde estar2n almacenados los datos de nuestras ta"las 4) dem2s o"3etos5 ) otro es el fichero de transacciones. -l fichero de transacciones consiste en una serie de registros de todas las modificaciones de la "ase de datos ) de la transaccin .ue ha reali1ado cada modificacin. -n el registro de transacciones figura el inicio de cada transaccin. Tam"i6n registra los cam"ios de los datos ) facilita suficiente informacin para deshacer las modificaciones 4si fuera necesario posteriormente5 reali1adas durante cada transaccin. -l fichero de "ase datos tiene e7tensin mdf mientras .ue el de transacciones tiene e7tensin ldf. -n este caso nos %amos a concentrar en este 8ltimo .ue es el .ue nos puede dar pro"lemas en cuanto al espacio.
Modo de recuperacin
-l modo de recuperacin de la "ase de datos es mu) importante para entender de donde surge nuestro pro"lema. (ependiendo de cmo hemos creado la "ase de datos
ha) %arios modos de recuperacin de la "ase de datos en el +,L +er%er. Tenemos el modo completo/ el de registro masi%o ) el sencillo. +i al crear la "ase de datos no especificamos nada el modo de recuperacin elegido es el completo. !ara sa"er el modo en .ue lo tenemos configurado podemos mirar en el 9:dministrador ;orporati%o< en las propiedades de la "ase de datos/ en la solapa 9=pciones<. :h> podemos %er cual es el modo de recuperacin de la "ase de datos. Tam"i6n podemos a%eriguar el modelo de recuperacin e3ecutando el comando sp_helpdb NombreBaseDatos en el anali1ador de consultas. +i lo hacemos as> en el panel de resultados ha) una columna status donde se detalla/ entre otra cosas/ el modelo de recuperacin 4Reco%er)?F$LL5. Tener modo de recuperacin completa significa .ue se puede recuperar la "ase de datos hasta el momento en el .ue se produ1ca un error o hasta un momento determinado del tiempo. -s el modo ha"itual en una "ase de datos de produccin. -n este modo de recuperacin cada transaccin .ue se produ1ca en la "ase de datos 4insercin/ modificacin/ "orrado@5 .ueda registrada en el archi%o de transacciones 4el .Log5 de tal manera .ue se puede reconstruir todo lo ocurrido con la "ase de datos a lo largo del tiempo. !ero usar este modo implica .ue el fichero de transacciones crecer2 indefinidamente/ llegando incluso a ser m2s grande .ue la propia "ase de datos. La solucin a este crecimiento es sencilla0 hacer copias de seguridad. ;uando hacemos una copia de seguridad del registro de transacciones los datos .ue pasan a la copia de seguridad se "orran del disco de3ando espacio li"re. :s> con cada copia eliminaremos del disco la parte del archi%o de Log .ue )a no es necesaria de3ando espacio li"re para registrar las nue%as transacciones .ue se produ1can en nuestra "ase de datos. Lo malo es .ue cuando esto ocurre se li"era espacio dentro del archi%o de Log/ pero no .uiere decir .ue se redu1ca el tama*o en disco de este fichero. -n este caso tendremos .ue reducir el tama*o del archi%o de Log en una segunda fase.
podemos usar el :dministrador ;orporati%o usando la opcin 9Reducir "ase de datos< o hacerlo desde el :nali1ador de ;onsultas. Do prefiero el :nali1ador de ;onsultas por.ue da m2s informacin de lo .ue estamos haciendo ) de los posi"les errores .ue pueden aparecer. Beamos .ue comandos tenemos .ue e3ecutar para hacerlo desde al :nali1ador de ;onsultas con T+,L.
$na %e1 hecho esto )a de"er>amos tener un archi%o de Log de tama*o ra1ona"le.
Plan b
+i no nos interesa tener copia de seguridad de todos los datos del fichero de Log 4o no ha) espacio para la copia de seguridad5 podemos seguir un m6todo m2s r2pido pero .ue no hace copia de seguridad de este fichero/ aun.ue s> del de la "ase de datos0 1F (SE i!ase 2F C,EC-./012 8F E9EC sp:addu$pdevice 'dis;', 'd:<=og i!ase"ba;' >F !%C-(. #%2%!%SE i!ase 2/ Copia i!ase 5F !%C-(. =/? i!ase G02, 2C(1C%2E:/1=H BF #!CC S,C01-A0=E 4 i!ase:=og, 1007
'Copia i!ase',
-sta opcin simplemente trunca el fichero de Log perdiendo la parte de este fichero .ue no esta acti%a.
ota final
Da se .ue no es necesario decirlo/ pero siempre .ue reali1amos alguna tarea .ue puede resultar peligrosa es o"ligatorio reali1ar una copia de seguridad de la "ase de datos as> como de las "ases de datos del sistema por si ocurre alg8n impre%isto.