miércoles, 23 de junio de 2010

Programar backups para SQL Server Express

Para el no deseable caso de que nuestra instalación de SharePoint se haya realizado contra SQL Server Express, pues sólo es recomendable para maquetas, entornos de desarrollo o de test de poco volumen, nos encontraremos con la limitación a la hora de programar los backups de las bases de datos implicadas, aparte de que otra de las limitaciones principales es el límite de 4GB por base de datos.

SQL Express 2005 y 2008 no tienen incluido el "SQL Agent", que es el que permite programar JOBS para ejecutar tareas de manera periódica en las bases de datos.

Como solución externa, se puede seguir el siguiente procedimiento, que básicamente realiza el backup vía "script" a través de las tareas programadas de Windows:

1. Buscamos el ejecutable de "sqlcmd.exe".
Para SQL Express 2005 se encuentra en:
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe"
Y para SLQ Express 2008:
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe"

2. Desde la interfaz gráfica del Management Studio podemos seguir los pasos para realizar el backup, pero justo antes de finalizar lo que hacemos es guardar el "script". Dentro del management studio colocamos la ruta donde deseamos guardar nuestro backup y seleccionamos las opciones que deseamos. Luego hacemos clic en el boton que nos permite generar el script, y seleccionamos la opción "Script Action to New Query Windows" y guardamos el archivo o seleccionamos "Script Action to File".





Esto nos generará una salida de fichero "NombreScript.sql" del tipo:

BACKUP DATABASE [NombreBaseDatos] TO DISK = N'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\NombreBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'NombreBaseDatos-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

3. Creamos un archivo .bat que es el que vamos a programar por a través de las tareas programadas de Windows ("Task Scheduler"). Dentro del archivo bat colocamos el siguiente comando (p.e. para SQL Server Express 2008):

"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" -S NOMBRESERVIDOR -i C:\Sistemas\NombreScript.sql -o C:\Sistemas\Restore.log

Importante mantener las comillas (") dentro de la parte inicial del comando ya que como la ruta contiene un espacio es necesario definirlo de esta manera. SRVNAME se debe reemplazar por el nombre correspondiente del servidor, C:\Sistemas\NombreScript.sql debe ser la ruta donde se guardó el script que realiza el backup y C:\Sistemas\Restore.log debe ser la ruta donde se desea guardar el log de restauración.

4. Por último desde el Programador de Tareas ("Task Scheduler"), se crea una nueva tarea para ejecutar el bat y se define la periodicidad de la ejecución.

Por último, algunos recursos interesantes sobre SQL Server Express:

- Referencia en Microsoft
http://www.microsoft.com/express/Database/

- Limitaciones de SQL Server Express
http://www.sqlserversi.com/2009/08/sql-server-2008-express-limitaciones.html

- Descarga de SQL Server Express 2005
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=220549b5-0b07-4448-8848-dcc397514b41

- Descarga de SQL Server Express 2008
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=58ce885d-508b-45c8-9fd3-118edd8e6fff

No hay comentarios: