Hacer un respaldo en SQL Server 2000 es muy sencillo, sin embargo lo que importa es el saber de que forma nos vamos a recuperar en dado caso que lo necesitemos. Para ello siempre es recomendable saber que tipo de recuperación tenemos configurada.
Simple: Este es el modo de recuperación más sencillo que tiene sqlserver y más fácil de administrar. En este no es posible respaldar el log de transacciones ya que la base de datos limpia por completo el log de transacciones cada vez que hace un checkpoint.
Full: Este modo es el que requiere de una mayor administración de SQL Server pero es la manera más segura de recuperarnos de una falla, pues es posible recuperar hasta la última transaccion antes de que se presentara el problema.
Bulk-Logged: En este modo también es posible recuperar la última transacción pero la diferencia que tiene con la Full, es que esta casi no ocupa mucho log de transacciones, pero a la hora de hacer el respaldo este va a ser más grande que lo que muestra el log. Esto se debe a que solo guarda las direcciones de las páginas donde se han llevado a cabo los cambios, pero a la hora de hacer el respaldo a disco se guardan los datos que cambiaron, de ahi su incremento de tamaño.
Generalmente en ambientes de producción siempre debemos de usar el modo Full o Bulk-Logged y para ambientes en desarrollo la Simple, para evitar estarles limpiando el log de transacciones a los usuarios.
Para poder ver que tipo recuperación tiene nuestra base de datos ejecutemos el siguiente query:
select DATABASEPROPERTYEX( 'bd' , 'Recovery' )
Ahora que sabemos que tipo de recuperación tenemos podemos hacer un plan de recuperación o de ser necesario cambiar el modo que tiene nuestra bd mediante un alter database.
El siguiente ejemplo cambia la base de datos a modo de recuperación SIMPLE
ALTER database bd set recovery SIMPLE
Haciendo el respaldo completo de la Base de Datos
Existen diferentes opciones para hacer un respaldo de la base de datos, yo les voy a indicar las opciones que considero son las más importantes y que generalmente son las que se usan a la hora de la acción.
BACKUP DATABASE bdprueba TO DISK = 'e:/MSSQL/BACKUP/bdprueba.BAK' WITH init, stats = 10
Este comando lo que hace es respalda la base de datos bdprueba, en la ruta e:/MSSQL/BACKUP con el nombre de bdprueba.BAK, la palabra init lo que hace es borrar cualquier archivo que exista con el nombre del respaldo que se esta indicando, por eso se debe de tener cuidado al usar esta opción, la palabra stats nos va a mostrar el progreso de nuestro respaldo en un incremento de 10%.
Estas es la sintaxis completa de como hacer un backup.
BACKUP DATABASE { database_name | @database_name_var }
TO [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
Por último, los permisos que se deben de tener para poder realizar un respaldo es ser miembro del rol de servidor sysadmin o miembro de los roles de bases de datos db_owner y db_backupoperator.
Existen otros tipos de respaldos, como son los diferenciales que solo guardan los cambios a partir de un respaldo completo y los respaldos transaccionales los cuales guardan el contenido del log de transacciones. Este último solo aplican para el modo de recuperación Full y Bulk-Logged pero los explicare después en otro articulo.