Не нашёл как поменять имя файла бэкапа автоматически генерируемое через планировщик, поэтому резервное копирование делаю через запуск T-SQL.
Собственно тут разностное (для full убираем слово "DIFFERENTIAL"; "DIF" меняем на "Full" - но это уже для красоты)
/****
Делаем архив несистемных баз
****/
DECLARE @Path VARCHAR(100) = N'C:\BACKUP\'
DECLARE @BaseName VARCHAR(100)
DECLARE @BackUpFileName VARCHAR(100)
DECLARE @BackUpBaseName VARCHAR(100)
DECLARE @backupSetId AS INT
/* Получаем все не системные БД */
DECLARE BaseList CURSOR
FOR SELECT NAME
FROM master..sysdatabases AS sdb
WHERE sdb.sid <> 0x01
OPEN BaseList
FETCH NEXT FROM BaseList INTO @BaseName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @BaseName
SET @BackUpFileName = @Path + @BaseName + '.bak'
SET @BackUpBaseName = '[DIF]' + @BaseName + '_' +
CAST(YEAR(getdate()) as varchar) +
RIGHT('0' + cast(MONTH(getdate()) as varchar), 2)+
RIGHT('0' + cast(DAY(getdate()) as varchar), 2)+ '_' +
RIGHT('0' + cast(datepart(hour, getdate()) as varchar), 2) +
RIGHT('0' + cast(datepart(minute, getdate()) as varchar), 2)
/* Делаем резервную копию */
BACKUP DATABASE @BaseName
TO DISK = @BackUpFileName
WITH DIFFERENTIAL , NOFORMAT, NOINIT,
NAME = @BackUpBaseName,
SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
/* Проверяем резервную копию */
SELECT @backupSetId = position
FROM msdb..backupset
WHERE database_name = @BaseName
AND backup_set_id = (SELECT max(backup_set_id)
FROM msdb..backupset
WHERE database_name = @BaseName
)
IF @backupSetId is null
BEGIN
RAISERROR(N'Ошибка верификации. Сведения о резервном копировании для базы данных "@BaseName" не найдены.', 16, 1)
END
RESTORE VERIFYONLY FROM DISK = @BackUpFileName WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
FETCH NEXT FROM BaseList INTO @BaseName
END
DEALLOCATE BaseList