Buenos días a todos en el newsgroup, el día de hoy generé
un sp que crea un backup y me avisa por email si se
generó o no algún error durante dicho proceso, pero
actualmente mi instrucción para capturar el error no
funciona, ¿Que creen que esté mal?, todo funciona menos
la parte donde intento capturar @@error, anexo el código:
declare
@NombreDB as varchar(50),
@LogDB as varchar(50),
@fisicoNombreDB as varchar(100),
@fisicoLogDB as varchar(100),
@fecha as varchar(20), @mes as varchar(12), @mes1 as
varchar(3),
@año as varchar(4)
set @fecha=getdate()
select @mes = datename(month,@fecha)
select @mes1 = case when @mes = 'January' then '1'
when @mes = 'February' then '2'
when @mes = 'March' then '3'
when @mes = 'April' then '4'
when @mes = 'May' then '5'
when @mes = 'June' then '6'
when @mes = 'July' then '7'
when @mes = 'August' then '8'
when @mes = 'September' then '9'
when @mes = 'October' then '10'
when @mes = 'November' then '11'
when @mes = 'December' then '12'
end
select @año = datename(year,getdate())
set @NombreDB='dbdatos'+convert(char(10),(getdate()),112)
+'.dat'
set @LogDB=left(@NombreDB,10)+'Log'+convert(char(10),
(getdate()),112)+'.dat'
set
@fisicoNombreDB='D:\DB\DBdatos\Backup\'+@año+'\'+@mes1+'\'
+@NombreDB
set
@fisicoLogDB='D:\DB\DBdatos\Backup\'+@año+'\'+@mes1+'\'+@L
ogDB
EXEC sp_addumpdevice 'disk', @NombreDB, @fisicoNombreDB
EXEC sp_addumpdevice 'disk', @LogDB, @fisicoLogDB
backup database dbfinrural to @NombreDB
backup log dbfinrural to @LogDB
declare @error_gen int
set @error_gen=0
**************************AQUI TENGO EL PROBLEMA
notificación por e-mail
if (@@error<>0)
begin
set @error_gen=@@error
exec
sp_send_cdontsmail 'mi@dominio.com.mx','mi@dominio.com.mx;
el@dominio.com.mx','Respaldo dbdatos (Error)',
'Respaldo de dbdatos generó error'+cast
(@error_gen as char(3))
print @error_gen
end
else
begin
exec
sp_send_cdontsmail 'mi@dominio.com.mx','mi@dominio.com.mx;
el@dominio.com.mx','Respaldo dbDatos (Correcto)',
'Respaldo de dbDatos generado correctamente'
end
El problema es que aunque ocurra un error pasa a la
instrucción else.
De antemano mil gracias wandoo
Leer las respuestas