SQL Server 2008 R2Resulta que por cuestiones laborales tengo la necesidad de hacer respaldos de una base de datos del MS SQL Server 2008 R2 express, y pues resulta que aunque se pueda instalar el MS SQL Server Management Studio Express, simplemente no podremos tener un plan de mantenimiento o automatización, puesto que esa versión carece del SQL Agent Service.

Buscando una posible solución me encontré muchas formas de hacerlo.

Claro, el Management Studio te facilita enormemente las cosas, puedes realizar muchas cosas más aparte de los planes de mantenimiento.

Multi-Server-Mgmt-Dashboard

Había una forma bastante simple de hacerlo y la encontré aquí, pero me encontré con el inconveniente de que para empezar si ejecutaba el comando sqlcmd así sin argumentos, simplemente me marcaba un error:

sqlcmd
HResult 0x2, Level 16, State 1
Named Pipes Provider: Could not open a connection to SQL Server [2].

Entonces ahí mismo encontré este interesante artículo donde habla de cómo usar esa shell de SQL Server. Las pruebas simples que hice funcionaron muy bien y ahí habría quedado sino fuera porque quería que me guardara el formato de fecha y hora, porque como quedan en un mismo directorio (por ahora), el anterior no me funcionaba, porque me machacaría las copias previas.

Así que use este otro que está más elaborado. Aunque lo tuve que cambiar debido a que no me gustaba la forma en que me dejaba los nombres de los archivos generados. Como ya tenía rato de no tocar este tipo de cosas, pues a googlear un poco y me encontré dos interesantes artículos: How to format Date/TimeDate and Time Conversions Using SQL Server, esos artículos me ayudaron a entender mejor la forma de tratar las fechas.

Funcionó, hice varias pruebas y funcionaron ambas, pero aún no estaba del todo contento con el resultado, sobre todo porque me dejaba archivos del tipo: RespaldoBD_13.10.2012_12:40.BAK y esos puntos en las fechas no me gustaban nadita ¬¬.

Hasta que finalmente vi que había una función que podría facilitarme un poco las cosas: Substring().

Así que este es el código como finalmente quedó:

declare @fecha varchar(MAX)
declare @archivo varchar(MAX)
set @fecha = SUBSTRING(Convert(Varchar(10), GetDate(),105),1,2)+SUBSTRING(Convert(Varchar(10), GetDate(),105),4,2)+SUBSTRING(Convert(Varchar(10), GetDate(),105),7,4)+'_'+SUBSTRING(CONVERT(Varchar(10), GetDate(),108),1,2)+SUBSTRING(CONVERT(Varchar(10), GetDate(),108),4,2)
set @archivo ='C:\Ruta\del\Directorio\Base_De_Datos_'+@fecha+'.bak'
BACKUP DATABASE Base_De_Datos_Respaldada
TO DISK = @archivo
   WITH FORMAT,
      MEDIANAME = 'D_SQLServerBackups',
      NAME = 'Full Backup of ERP2012_Pycsur';
GO

El anterior archivo lo pueden guardar en un archivo de texto “archivo.sql” y se manda a llamar así:

sqlcmd -S Servidor\Instancia_BD -i C:\Ruta\archivo.sql

Ese último comando lo pueden poner en el programador de tareas y listo, proceso automatizado ñ_ñ

Noticias relacionadas: