¡Hola! les comparto un script que utilizo para automatizar mi backup de mis BD de SAP B1 con SQL Server 2012.
Esta tiene una retención de 7 días y también viene con un log el cual podremos revisar para su respectivo seguimiento.
Este mismo Script lo puedes ajustar para “X” numero de BD
1.-Script:
–1. Variable declaration
DECLARE @year VARCHAR(255);
DECLARE @path VARCHAR(500);
DECLARE @name VARCHAR(500);
DECLARE @filename VARCHAR(256);
DECLARE @DB VARCHAR(500), @SCRIPT NVARCHAR(4000);
SELECT @year = (SELECT DATENAME(dw, GETDATE()));
SET @DB = 'BD_TEST';
–2. Setting the backup path
SET @path = 'C:\Backup\' ;
–3. Defining the filename format
SELECT @name =@DB + '_';
SET @filename = @path + @name + @year + '_' + CAST(DATEPART(weekday, GETDATE()) AS nvarchar(1)) + '.bak';
PRINT CAST(GETDATE() AS nvarchar) + ' - COPIA DE SEGURIDAD INICIADA AL ARCHIVO: ' + @filename
–4. Executing the backup command
SELECT @SCRIPT = '
BACKUP DATABASE '+ @DB +' TO DISK = ''' + @filename + ''' WITH NOFORMAT, INIT,
NAME = N''' + @DB + ' -Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
';
EXEC (@SCRIPT);
declare @backupSetId as int
select @backupSetId = position from msdb.DBO.backupset where database_name= @DB
and backup_set_id=(select max(backup_set_id) from msdb.DBO.backupset where database_name=@DB )
if @backupSetId is null
begin
DECLARE @MESSAGE VARCHAR(MAX)= '';
SELECT @MESSAGE = N'Verify failed. Backup information for database ''' + @DB + ' ''.';
raiserror(@MESSAGE, 16, 1) ;
end;
RESTORE VERIFYONLY FROM DISK = @filename WITH FILE = @backupSetId, NOUNLOAD, NOREWIND;
GO
2.- Creamos un bat que nos permita ejecutar el código T-SQL.
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE" -S SERVIDORINSTANCIA\SQLEXPRESS -i "C:\BackupBDSAP\BackupsBD.sql" >> log.txt
Sustituimos SERVIDORINSTANCIA
por el nombre de nuestro servidor y la instancia de SQL Server sobre la que queremos trabajar. Y el directorio donde esta nuestro script "BackupsBD.sql"
3.-Programamos la Tarea y nos queda algo similar.
Ejemplo:
BD_TEST_Lunes_1.bak
Y en el log podremos encontrar algo como esto:
May 30 2019 5:47PM - COPIA DE SEGURIDAD INICIADA AL ARCHIVO: C:\BackupB\BD_TEST_Lunes_1.bak
10por ciento procesado.
20por ciento procesado.
30por ciento procesado.
40por ciento procesado.
50por ciento procesado.
60por ciento procesado.
70por ciento procesado.
80por ciento procesado.
90por ciento procesado.
Se han procesado 90524 p ginas para la base de datos 'BD_TEST', archivo 'BD_TEST' en el archivo 1.
100por ciento procesado.
Saludos,