Oi, galera! Estou com a seguinte situação: 1. Inicio uma transação através da aplicação 2. Essa aplicação chama uma procedure 3. Ocorre um erro durante a execução da procedure (forço uma exceção) 4. Salvo as informações relativas ao erro numa tabela própria, utilizando outra transação 5. Retorno para a aplicação 6. Dou ROLLBACK a partir da aplicação O problema é que, quando executo ROLLBACK, as operações salvas na tabela própria são desfeitas... ou seja, o meu COMMIT na outra transação não é considerado... Segue exemplo do que estou tentando fazer... DECLARE @P_DT_PGTO datetime
DECLARE @P_COD_USUARIO int
SET @P_DT_PGTO = '20100515'
SET @P_COD_USUARIO = 152
BEGIN TRANSACTION TRAN_01
BEGIN TRY
EXECUTE [SIP].[SP_GERA_SIP_PGTO] @P_DT_PGTO, @P_COD_USUARIO
COMMIT TRANSACTION TRAN_01
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION TRAN_01
END CATCH
CREATE PROCEDURE [SIP].[SP_GERA_SIP_PGTO](
@P_DT_PGTO DATETIME,
@P_COD_USUARIO INT
)
AS
BEGIN
-- VALIDA PARÂMETROS
IF (@P_DT_PGTO IS NULL) OR (@P_COD_USUARIO IS NULL)
BEGIN
BEGIN TRANSACTION TRAN_02
INSERT INTO SIP.LOG_SIP('DATA DE PAGAMENTO OU USUÁRIO NÃO INFORMADO(S))
COMMIT TRANSACTION TRAN_02
RAISERROR('DATA DE PAGAMENTO OU USUÁRIO NÃO INFORMADO(S).', 16, 1)
END
END É possível fazer o que estou querendo? []'s