Yo para la salva cree un Procedimineto almacenado y lo llamo desde Delphi y me funciona bien, yo uso MSSQL Server 2000:
Código SQL
[-]CREATE PROCEDURE BACKUP_BD AS
SET LANGUAGE spanish
DECLARE @BACKUP VARCHAR(60)
DECLARE @DIRECTORIO CHAR(20)
DECLARE @NOMBRE CHAR(60)
SET @DIRECTORIO = 'd:\'
SELECT @nombre = 'DB '+
CASE Convert(char(1),datepart(dw,getdate()))
when 1 then 'Lunes'
when 2 then 'Martes'
when 3 then 'Miercoles'
when 4 then 'Jueves'
when 5 then 'Viernes'
when 6 then 'Sabado'
when 7 then 'Domingo'
end + ' '+
Convert(char(2),DATEPART(dd,getdate()))+
' '+ 'de '+
case Convert(char(2),datepart(MM,getdate()))
when 01 then 'Ene'
when 02 then 'Feb'
when 03 then 'Mar'
when 04 then 'Abr'
when 05 then 'May'
when 06 then 'Jun'
when 07 then 'Jul'
when 08 then 'Ago'
when 09 then 'Sep'
when 10 then 'Oct'
when 11 then 'Nov'
when 12 then 'Dic'
End +' '+'del '+
convert(char(4),datepart(yyyy,getdate()))+'.BAK'
set @backup = rtrim(@directorio)+rtrim(@nombre)
checkpoint
BACKUP DATABASE RRHH to disk = @backup with init
BACKUP LOG RRHH TO disk = @backup
DBCC SHRINKFILE (RRHH_Log, 100)
para restaurar nunca lo pude hacer de Delphi, siempre me dice que la BD esta en uso y no le encontré solución por lo que cuando lo necesito lo hago desde el Interprise Maneger del MSSQL