Pessoal... bom dia  Tenho uma trigger que trabalha dentro de uma tabela a partir do momento que existe uma inserção de um tipo de registro.  Até ai tudo bem, porém, muito de vez enquando ao executar acontece o seguinte erro:  No user transaction is currently in progress. The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION  Alguém sabe em que momento ou porque acontece esse erro...  O que me intriga é que não é sempre e sim de vez enquando.  Irei colocar a trigger aqui, mas aviso que ela é gigante...   ---- CREATE TRIGGER TR_AUXRM_BAIXA_ESTOQUE ON TMOV FOR UPDATE AS  DECLARE @ERRO   INT DECLARE @PASSO  INT DECLARE @NM_ANTIGO VARCHAR(15) DECLARE @NM_NOVO   VARCHAR(15) DECLARE @CODTMV	   VARCHAR(10)  DECLARE @ENTROU INT  SET @ENTROU = 0   IF ( SELECT COUNT(1) FROM INSERTED  WHERE CODCOLIGADA = 01 AND ((CODTMV IN ('2.2.01','2.2.15','2.2.19','2.2.12','2.2.21')) OR (CODTMV = '2.1.06' AND CAMPOLIVRE3 LIKE '%999')) ) > 0   BEGIN     SET @NM_ANTIGO = (SELECT NUMEROMOV FROM DELETED)    SET @NM_NOVO   = (SELECT NUMEROMOV FROM INSERTED)    SET @CODTMV    =  (SELECT CASE WHEN CODTMV = '2.2.01' THEN '2.1.05'  				           WHEN CODTMV = '2.2.15' THEN '2.1.07'                                                                     WHEN CODTMV = '2.1.06' THEN '2.1.08'  ELSE '2.1.09' END AS RESULT FROM INSERTED)       IF @NM_ANTIGO <> @NM_NOVO      BEGIN                  SET @ENTROU = 1    	DECLARE @IDMOV     		INT	 	DECLARE @IDMOV_ORIG		INT 	DECLARE @NUMEROMOV              VARCHAR(15) 	DECLARE @DATASEMHORA 		DATETIME 	DECLARE @DATACOMHORA 		DATETIME 	DECLARE @CODCOLIGADA		INT 	DECLARE @CODFILIAL		SMALLINT 	DECLARE @CODLOC			VARCHAR(15) 	DECLARE @SERIE			VARCHAR(8) 	DECLARE @TIPO			VARCHAR(1) 	DECLARE @STATUS			VARCHAR(1) 	DECLARE @DATAEMISSAO		DATETIME 	DECLARE @DATAEXTRA1		DATETIME 	DECLARE @CODCPG			VARCHAR(5) 	DECLARE @OBSERVACAO		VARCHAR(60) 	DECLARE @CODMOEVALORLIQUIDO	VARCHAR(10) 	DECLARE @DATAMOVIMENTO		DATETIME 	DECLARE @FRETECIFOUFOB		SMALLINT 	DECLARE @CODCCUSTO		VARCHAR(25) 	DECLARE @CODVEN1		VARCHAR(16) 	DECLARE @CODCOLCFO		SMALLINT 	DECLARE @CODCOLCXA		SMALLINT 	DECLARE @GERADOPORLOTE		SMALLINT 	DECLARE @STATUSEXPORTCONT	SMALLINT 	DECLARE @CAMPOLIVRE2		VARCHAR(100) 	DECLARE @GEROUCONTATRABALHO     SMALLINT 	DECLARE @GERADOPORCONTATRABALHO SMALLINT 	DECLARE @HORULTIMAALTERACAO    DATETIME 	DECLARE @INDUSOOBJ    		RMDVALOR2 	DECLARE @INTEGRADOBONUM		SMALLINT 	DECLARE @HORARIOEMISSAO		DATETIME 	DECLARE @DATACRIACAO		DATETIME 	DECLARE @VINCULADOESTOQUEFL	SMALLINT 	DECLARE @CONTORCAMENTOANTIGO	SMALLINT 	DECLARE @DATACONTABILIZACAO	DATETIME 	DECLARE @SEQUENCIALESTOQUE	INT 	DECLARE @INTEGRADOAUTOMACAO	SMALLINT 	DECLARE @INTEGRAAPLICACAO	CHAR(1) 	DECLARE @DATALANCAMENTO		DATETIME 	DECLARE @USARATEIOVALORFIN      SMALLINT 	DECLARE @SALDO                  RMDVALOR4 	DECLARE @CODPRD                 VARCHAR(30)   	SET @SERIE = 'SEXP' 	 	 	SET @DATASEMHORA     = CONVERT(VARCHAR,GETDATE(),112) 	SET @DATACOMHORA     = CONVERT(VARCHAR,GETDATE(),112) + ' ' + CONVERT(VARCHAR,GETDATE(),114)  	   	 	SELECT  	    @IDMOV_ORIG  = IDMOV, 	    @CODCOLIGADA = CODCOLIGADA, 	    @CODFILIAL   = CODFILIAL, 	    @CODLOC 	 = CODLOC, 	    @TIPO        = 'A', 	    @STATUS      = 'N', 	    @DATAEMISSAO = @DATASEMHORA, 	    @DATAEXTRA1   = @DATASEMHORA, 	    @CODCPG      = CODCPG, 	    @OBSERVACAO  = OBSERVACAO, 	    @CODMOEVALORLIQUIDO = CODMOEVALORLIQUIDO, 	    @DATAMOVIMENTO = @DATASEMHORA, 	    @FRETECIFOUFOB = FRETECIFOUFOB, 	    @CODCCUSTO  = CODCCUSTO, 	    @CODVEN1 = CODVEN1, 	    @CODCOLCFO = CODCOLCFO, 	    @CODCOLCXA = CODCOLCXA, 	    @GERADOPORLOTE = GERADOPORLOTE, 	    @STATUSEXPORTCONT = 0, 	    @CAMPOLIVRE2 = CAMPOLIVRE2, 	    @GEROUCONTATRABALHO = 0, 	    @GERADOPORCONTATRABALHO = 0, 	    @HORULTIMAALTERACAO = @DATACOMHORA, 	    @INDUSOOBJ = 0,  	      	    @INTEGRADOBONUM = 0, 	    @HORARIOEMISSAO = @DATACOMHORA, 	    @DATACRIACAO = @DATASEMHORA, 	    @VINCULADOESTOQUEFL = 0, 	    @CONTORCAMENTOANTIGO = 0, 	    @DATACONTABILIZACAO = @DATASEMHORA, 	    @SEQUENCIALESTOQUE = SEQUENCIALESTOQUE, 	    @INTEGRADOAUTOMACAO = 0, 	    @INTEGRAAPLICACAO = 'T', 	    @DATALANCAMENTO = @DATASEMHORA, 	    @USARATEIOVALORFIN = USARATEIOVALORFIN             FROM INSERTED 	              --VALIDAÇÃO 	DECLARE ITENS_VALIDA CURSOR 	FOR  	SELECT IDPRD, QUANTIDADE, CODUND FROM TITMMOV WHERE CODCOLIGADA = 1 AND IDMOV = @IDMOV_ORIG  	DECLARE @MENSAGEM    VARCHAR(1000) 	DECLARE @IDPRD_CUR_V INT 	DECLARE @QUANTIDADE_CUR_V INT 	DECLARE @CODUND_CUR_V VARCHAR(5) 	DECLARE @IDPRD_COM_V INT 	DECLARE @QUANTIDADE_COM_V INT 	DECLARE @CODUND_COM_V VARCHAR(5)  	DECLARE @CUSTOMEDIO_COM_V MONEY  	OPEN ITENS_VALIDA  	FETCH NEXT FROM ITENS_VALIDA 	INTO @IDPRD_CUR_V, @QUANTIDADE_CUR_V, @CODUND_CUR_V  	WHILE @@FETCH_STATUS = 0 	BEGIN          IF (SELECT COUNT(1) FROM TPRDCOMPOSTO WHERE CODCOLIGADA = 1 AND IDPRD = @IDPRD_CUR_V) = 0          BEGIN            SET @ERRO = 1            SET @MENSAGEM = 'Esta NF possui itens não compostos (fazer baixa manual)'  	   CLOSE ITENS_VALIDA 	   DEALLOCATE ITENS_VALIDA             GOTO ERRO_VALIDA         END          ELSE         BEGIN 		DECLARE COMPOSTO_VALIDA CURSOR 		FOR  		SELECT C.IDPRDCOMPONENTE, C.QUANTIDADE, T.CODUNDCONTROLE  , T.CUSTOMEDIO                  FROM TPRDCOMPOSTO C                  INNER JOIN TPRD T ON T.IDPRD = C.IDPRDCOMPONENTE                 WHERE C.IDPRD = @IDPRD_CUR_V  		OPEN COMPOSTO_VALIDA  		FETCH NEXT FROM COMPOSTO_VALIDA 		INTO @IDPRD_COM_V, @QUANTIDADE_COM_V, @CODUND_COM_V, @CUSTOMEDIO_COM_V  		WHILE @@FETCH_STATUS = 0 		BEGIN 		    SELECT @SALDO=TPRD.SALDOGERALFISICO, @CODPRD=TPRD.CODIGOPRD                       FROM TPRD                       WHERE IDPRD = @IDPRD_COM_V			  		    IF (@SALDO) < (@QUANTIDADE_COM_V * @QUANTIDADE_CUR_V)                     BEGIN  		         SET @ERRO = 2 		         SET @MENSAGEM = 'O produto ' + @CODPRD + ' não possui saldo suficiente'  		         CLOSE COMPOSTO_VALIDA 	 	         DEALLOCATE COMPOSTO_VALIDA  			 CLOSE ITENS_VALIDA  		   	 DEALLOCATE ITENS_VALIDA  		         GOTO ERRO_VALIDA                     END	   		    IF ISNULL(@CUSTOMEDIO_COM_V,0) = 0                      BEGIN 		         SET @ERRO = 3 		         SET @MENSAGEM = 'O produto ' + @CODPRD + ' não possui custo médio cadastrado'  		         CLOSE COMPOSTO_VALIDA 	 	         DEALLOCATE COMPOSTO_VALIDA  			 CLOSE ITENS_VALIDA  		   	 DEALLOCATE ITENS_VALIDA  		         GOTO ERRO_VALIDA                     END                      		   FETCH NEXT FROM COMPOSTO_VALIDA 		   INTO @IDPRD_COM_V, @QUANTIDADE_COM_V, @CODUND_COM_V, @CUSTOMEDIO_COM_V                 END  	        CLOSE COMPOSTO_VALIDA  	        DEALLOCATE COMPOSTO_VALIDA              END   	   FETCH NEXT FROM ITENS_VALIDA 	   INTO @IDPRD_CUR_V, @QUANTIDADE_CUR_V, @CODUND_CUR_V         END  	CLOSE ITENS_VALIDA  	DEALLOCATE ITENS_VALIDA  	UPDATE GAUTOINC SET VALAUTOINC=VALAUTOINC+1 WHERE CODCOLIGADA=1 AND CODAUTOINC='IDMOV' 	SET @IDMOV = (SELECT VALAUTOINC FROM GAUTOINC WHERE CODCOLIGADA=1 AND CODAUTOINC='IDMOV')	   	UPDATE GAUTOINC SET VALAUTOINC=VALAUTOINC+1 WHERE CODCOLIGADA=1 AND CODAUTOINC=@SERIE+'000001' 	SET @NUMEROMOV = right('000000' + CONVERT(VARCHAR,(SELECT VALAUTOINC FROM GAUTOINC WHERE CODCOLIGADA=1 AND CODAUTOINC=@SERIE+'000001')),6)	   	    INSERT INTO TMOV 	   ( 	    IDMOV,             NUMEROMOV,  	    CODCOLIGADA, 	    CODFILIAL, 	    CODLOC, 	    SERIE, 	    CODTMV, 	    TIPO, 	    STATUS, 	    DATAEMISSAO, 	    DATAEXTRA1, 	    CODCPG, 	    OBSERVACAO, 	    CODMOEVALORLIQUIDO, 	    DATAMOVIMENTO, 	    FRETECIFOUFOB, 	    CODCCUSTO, 	    CODVEN1, 	    CODCOLCFO, 	    CODCOLCXA, 	    GERADOPORLOTE, 	    STATUSEXPORTCONT, 	    CAMPOLIVRE2, 	    GEROUCONTATRABALHO, 	    GERADOPORCONTATRABALHO, 	    HORULTIMAALTERACAO, 	    INDUSOOBJ,      	    INTEGRADOBONUM, 	    HORARIOEMISSAO, 	    DATACRIACAO, 	    VINCULADOESTOQUEFL, 	    CONTORCAMENTOANTIGO, 	    DATACONTABILIZACAO, 	    SEQUENCIALESTOQUE, 	    INTEGRADOAUTOMACAO, 	    INTEGRAAPLICACAO, 	    DATALANCAMENTO, 	    USARATEIOVALORFIN 	    ) 	    VALUES 	    ( 	    @IDMOV,  	    @NUMEROMOV, 	    @CODCOLIGADA, 	    @CODFILIAL, 	    @CODLOC, 	    @SERIE, 	    @CODTMV,	 	    @TIPO, 	    @STATUS, 	    @DATAEMISSAO, 	    @DATAEXTRA1, 	    @CODCPG, 	    @OBSERVACAO, 	    @CODMOEVALORLIQUIDO, 	    @DATAMOVIMENTO, 	    @FRETECIFOUFOB, 	    @CODCCUSTO, 	    @CODVEN1, 	    @CODCOLCFO, 	    @CODCOLCXA, 	    @GERADOPORLOTE, 	    @STATUSEXPORTCONT, 	    @CAMPOLIVRE2, 	    @GEROUCONTATRABALHO, 	    @GERADOPORCONTATRABALHO, 	    @HORULTIMAALTERACAO, 	    @INDUSOOBJ,      	    @INTEGRADOBONUM, 	    @HORARIOEMISSAO, 	    @DATACRIACAO, 	    @VINCULADOESTOQUEFL, 	    @CONTORCAMENTOANTIGO, 	    @DATACONTABILIZACAO, 	    @SEQUENCIALESTOQUE, 	    @INTEGRADOAUTOMACAO, 	    @INTEGRAAPLICACAO, 	    @DATALANCAMENTO, 	    @USARATEIOVALORFIN 	    )   	INSERT INTO TMOVHISTORICO         (           CODCOLIGADA, 	 IDMOV, 	 HISTORICOCURTO         )         VALUES         ( 	  @CODCOLIGADA,           @IDMOV,           'BAIXA' 	 )                  	         DECLARE  @IDMOVDESTINO INT         DECLARE  @CODCOLDESTINO INT 	DECLARE  @IDPROCESSO   INT    	SELECT  	 @IDMOVDESTINO  = IDMOVDESTINO, 	 @CODCOLDESTINO = CODCOLDESTINO 	FROM  	 TMOVRELAC 	WHERE 	 IDMOVDESTINO = @IDMOV_ORIG           UPDATE GAUTOINC SET VALAUTOINC=VALAUTOINC+1 WHERE CODCOLIGADA=1 AND CODAUTOINC='IDPROCESSOFAT' 	SET @IDPROCESSO = (SELECT VALAUTOINC FROM GAUTOINC WHERE CODCOLIGADA=1 AND CODAUTOINC='IDPROCESSOFAT')	   	INSERT INTO TMOVRELAC VALUES 	 ( 	  @IDMOVDESTINO, 	  @CODCOLDESTINO, 	  @IDMOV, 	  @CODCOLIGADA, 	  'P', 	  @IDPROCESSO 	)   	DECLARE ITENS CURSOR 	FOR  	SELECT IDPRD, QUANTIDADE, CODUND, NSEQITMMOV  FROM TITMMOV WHERE IDMOV = @IDMOV_ORIG  	DECLARE @SEQ INT    DECLARE @SEQUENCIA_CUR INT 	DECLARE @IDPRD_CUR INT 	DECLARE @QUANTIDADE_CUR INT 	DECLARE @CODUND_CUR VARCHAR(5) 	DECLARE @IDPRD_COM INT 	DECLARE @QUANTIDADE_COM INT 	DECLARE @CODUND_COM VARCHAR(5)    DECLARE @CUSTOMEDIO_COM MONEY    DECLARE @VALOR_GERAL MONEY 	DECLARE @QUANTIDADE_SOBRA INT	    DECLARE @IDLOTE INT    DECLARE @QUANTIDADE_LOTE INT 	DECLARE @QUANTIDADE_B_LOTE INT          SET @SEQ = 0  	SET @VALOR_GERAL = 0 	OPEN ITENS  	FETCH NEXT FROM ITENS 	INTO @IDPRD_CUR, @QUANTIDADE_CUR, @CODUND_CUR, @SEQUENCIA_CUR  	WHILE @@FETCH_STATUS = 0 	BEGIN          IF (SELECT COUNT(1) FROM TPRDCOMPOSTO WHERE IDPRD = @IDPRD_CUR) > 0          BEGIN 		DECLARE COMPOSTO CURSOR 		FOR  		SELECT C.IDPRDCOMPONENTE, C.QUANTIDADE, T.CODUNDCONTROLE , T.CUSTOMEDIO                   FROM TPRDCOMPOSTO C                  INNER JOIN TPRD T ON T.IDPRD = C.IDPRDCOMPONENTE                 WHERE C.IDPRD = @IDPRD_CUR   		OPEN COMPOSTO  		FETCH NEXT FROM COMPOSTO 		INTO @IDPRD_COM, @QUANTIDADE_COM, @CODUND_COM, @CUSTOMEDIO_COM  		WHILE @@FETCH_STATUS = 0 		BEGIN  	          SET @SEQ = @SEQ + 1 	          INSERT INTO TITMMOV  	           (CODCOLIGADA, 				   IDMOV, 				   NSEQITMMOV, 				   NUMEROSEQUENCIAL,	 				   IDPRD, 				   QUANTIDADE, 				   PRECOUNITARIO, 	            CODUND, 					CAMPOLIVRE 	            ) 	           VALUES 	           ( 		    		@CODCOLIGADA, 	            @IDMOV,  		    		@SEQ, 	            @SEQ, 	            @IDPRD_COM, 		    		(@QUANTIDADE_COM*@QUANTIDADE_CUR), 	            @CUSTOMEDIO_COM, 	            @CODUND_COM  , 					CONVERT(VARCHAR(15),@SEQUENCIA_CUR) 	           )  		                      SET @QUANTIDADE_SOBRA =  (@QUANTIDADE_COM*@QUANTIDADE_CUR)                       UPDATE TPRDLOC                    SET SALDOFISICO2 = SALDOFISICO2 - @QUANTIDADE_SOBRA,                        SALDOFISICO5 = SALDOFISICO5 - @QUANTIDADE_SOBRA, 	              SALDOFINANCEIRO2 = SALDOFINANCEIRO2 - (@QUANTIDADE_SOBRA * @CUSTOMEDIO_COM)                   WHERE CODLOC = '01' AND IDPRD = @IDPRD_COM                      SET @QUANTIDADE_B_LOTE = 0                   WHILE (@QUANTIDADE_SOBRA > 0) 		  BEGIN                      SELECT @IDLOTE=IDLOTE, @QUANTIDADE_LOTE=SALDOFISICO2 FROM TLOTEPRDLOC WHERE IDPRD = @IDPRD_COM AND SALDOFISICO2 <> 0 AND CODLOC = '01'                          AND IDLOTE = (SELECT MIN(IDLOTE) FROM TLOTEPRDLOC WHERE IDPRD = @IDPRD_COM AND SALDOFISICO2 <> 0 AND CODLOC = '01') ORDER BY IDLOTE                      IF @QUANTIDADE_LOTE <= @QUANTIDADE_SOBRA                        BEGIN                           SET @QUANTIDADE_SOBRA = @QUANTIDADE_SOBRA - @QUANTIDADE_LOTE                           SET @QUANTIDADE_B_LOTE = @QUANTIDADE_LOTE                           UPDATE TLOTEPRDLOC SET SALDOFISICO2 = 0, SALDOFISICO5 = 0 WHERE IDLOTE = @IDLOTE                        END                     ELSE                        BEGIN         		 UPDATE TLOTEPRDLOC SET SALDOFISICO2 = SALDOFISICO2 - @QUANTIDADE_SOBRA, SALDOFISICO5 = SALDOFISICO5 - @QUANTIDADE_SOBRA WHERE IDLOTE = @IDLOTE                          SET @QUANTIDADE_B_LOTE = @QUANTIDADE_SOBRA                          SET @QUANTIDADE_SOBRA = 0                                                   END     		    INSERT INTO TITMLOTEPRD (CODCOLIGADA, IDMOV, NSEQITMMOV, IDLOTE, QUANTIDADE2, QUANTIDADEARECEBER) 		                     VALUES (@CODCOLIGADA, @IDMOV, @SEQ, @IDLOTE, (@QUANTIDADE_B_LOTE)*-1, (@QUANTIDADE_B_LOTE)*-1)                     END  		   SET @VALOR_GERAL = @VALOR_GERAL + (@CUSTOMEDIO_COM*(@QUANTIDADE_COM*@QUANTIDADE_CUR)) 		                       UPDATE TPRD                    SET  SALDOGERALFISICO = SALDOGERALFISICO - (@QUANTIDADE_COM*@QUANTIDADE_CUR)                    WHERE IDPRD = @IDPRD_COM      		  			FETCH NEXT FROM COMPOSTO 			INTO @IDPRD_COM, @QUANTIDADE_COM, @CODUND_COM, @CUSTOMEDIO_COM                 END 	        CLOSE COMPOSTO  	        DEALLOCATE COMPOSTO          END  	FETCH NEXT FROM ITENS 	INTO @IDPRD_CUR, @QUANTIDADE_CUR, @CODUND_CUR, @SEQUENCIA_CUR  	END   	CLOSE ITENS 	DEALLOCATE ITENS         UPDATE TMOV        SET   VALORBRUTO =  @VALOR_GERAL, VALORLIQUIDO = @VALOR_GERAL, VALOROUTROS = @VALOR_GERAL        WHERE IDMOV = @IDMOV      END  END   ERRO_VALIDA:  IF @ENTROU = 1    BEGIN 	IF @ERRO <> 0  	  BEGIN  	    INSERT INTO TB_LOG_AUXRM VALUES (@NM_NOVO, NULL, 'E',@MENSAGEM,@DATACOMHORA) 	  END 	ELSE 	  BEGIN  	    INSERT INTO TB_LOG_AUXRM VALUES (@NM_NOVO, @NUMEROMOV, 'O','',@DATACOMHORA)                        INSERT INTO TB_RELAC_AUXRM VALUES(@IDMOV_ORIG,@IDMOV)  	  END    END     SET NOCOUNT OFF SET ANSI_NULLS OFF SET ANSI_WARNINGS ON  ----  Valeu NIK