parent nodes: SQLapuntes
Backup de base de datos con OSQL
Si se usa una versión little o express de Sql Server puede que no tengamos forma de crear un plan de mantenimiento de la base de datos.
Para, al menos, poder hacer copia de seguridad hay que usar el OSql y las tareas programadas de windows.
Tarea programada
Inicio > Configuración > Panel de control > Tareas programadas
Datos necesarios:
usr y pwd de la cuenta de windows
planificación (días y horas de ejecución)
tarea a ejecutar (será un archivo .bat)
Archivo de proceso por lotes .bat
Tendrá la llamada al script SQL a ejecutar por osql
osql -S <NOMBRE_DOMINIO>\<NOMBRE_SERVIDOR> -U >usuario_con_permisos> -P <password> -d <nombre_bdd> -i <scrip_SQL>
Por ejemplo (dominio, servidor y password son de mentira)
osql -S COLEGIO\SERVERSQLEXPRESS -U sa -P 12345678 -d SIGC_COL -i "C:\MSSQL\Backup\backupBD.sql"
Script SQL
Crear el nombre del archivo de copia, lo hacemos siguiendo el estilo del SQL Server: base de datos + fecha + hora + minuto + .bak
Dar la orden de backup con el nombre de archivo de destino.
DECLARE @TODAY AS CHAR( 8 )
DECLARE @FILE_NAME AS CHAR( 255 )
DECLARE @HOUR AS CHAR( 2 )
DECLARE @MINUTE AS CHAR( 2 )
SET @HOUR = DATEPART( hh, GETDATE() )
SET @MINUTE = DATEPART( mi, GETDATE() )
SET @TODAY = CONVERT( CHAR( 8 ), GETDATE(), 112 )
SET @FILE_NAME = 'C:\MSSQL\Backup\SIGC_COL' + @TODAY + @HOUR + @MINUTE + '.BAK'
BACKUP DATABASE [SIGC_COL] TO DISK = @FILE_NAME
Limitaciones
No optimiza base de datos, ni índices, ni registros, ni 'na de na'
No se comprueba la integridad
No guarda logs de como ha ido la tarea
Las copias tienen distinto nombre por lo que no se machacan... ¡ojo con llenar el disco!
Supongo que se podría ampliar el script para que hiciera todo eso pero... no hay tiempo