Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/10/2012, 10:35
DjNelson
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 21 años, 3 meses
Puntos: 0
Control de errores en procedimiento almacenado

Tengo un procedimiento almacenado (he quitado todo el código porque son miles de líneas y no son necesarias para la duda):

[PHP]
Código SQL:
Ver original
  1. ON [dbo].[TABLA]
  2. FOR DELETE
  3. AS
  4. BEGIN TRY
  5. BEGIN TRANSACTION
  6.     DECLARE @VARIABLE1 VARCHAR(10)
  7. --BLABLABLA
  8.  
  9. COMMIT TRANSACTION
  10.  
  11. END TRY
  12. BEGIN CATCH
  13.     IF XACT_STATE() <> 0
  14.         BEGIN
  15.             ROLLBACK TRANSACTION;
  16.         END
  17.  
  18.     INSERT INTO LogGeneral (Evento,Tag) VALUES (ERROR_PROCEDURE() + ' ' + ERROR_MESSAGE(),'ErrorProcAlm')
  19. END CATCH

Lo que quiero es que si se produce un error me lo guarde en una tabla, para ello uso un TRY...CATH.

Como puede verse uso una trasacción.

El problema es que la trasacción crea conflictos con otras transacciones y no me queda otra que quitarla.

SI QUITO LA TRANSACCIÓN CUANDO SE PRODUCE UN ERROR NO ME INSERTA NADA EN LA TABLA DONDE GUARDO LOS ERRORES!

¿Alguien sabe porqué?
¿Se os ocurre otra manera de anotar los errores?

Saludos y gracias.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)

Última edición por gnzsoloyo; 17/01/2014 a las 06:21