backup+email=no puedo capturar el @@error

20/12/2004 - 17:31 por wandoo | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Isaias
20/12/2004 - 17:49 | Informe spam
"wandoo"

Perdona, pero no veo donde estes CAPTURANDO el resultado del ERROR. (Si lo
hay)
Respuesta Responder a este mensaje
#2 Tinoco
20/12/2004 - 18:05 | Informe spam
Hola wandoo,

Debes tener en cuenta que el @@error se limpia cada vez que se ejecuta otra
instruccion SQL. En este caso estas evaluando solo la ultima instruccion, no
el Backup.

Hermilson Tinoco.

"wandoo" wrote:

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 '',';
','Respaldo dbdatos (Error)',
'Respaldo de dbdatos generó error'+cast
(@error_gen as char(3))
print @error_gen
end
else
begin
exec
sp_send_cdontsmail '',';
','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

Respuesta Responder a este mensaje
#3 wandoo
20/12/2004 - 20:58 | Informe spam
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 '','


;
','Respaldo dbdatos (Error)',
'Respaldo de dbdatos generó error'+cast
(@error_gen as char(3))
print @error_gen
end
else
begin
exec
sp_send_cdontsmail '','


;
','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
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida