Sql EXECUTE后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一次计数=0,当前计数=1

Sql EXECUTE后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一次计数=0,当前计数=1,sql,sql-server,tsql,transactions,Sql,Sql Server,Tsql,Transactions,这个Sql Server存储过程为我提供了 错误: (Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.): SQL: 请参见以下变通方法以供参考: 尝试在sql代码的可疑区域打印@@TranCount,以获取事务计数。 尝试通过启用调试来执行相同的操作。 有一个很好的答案可能会有

这个Sql Server存储过程为我提供了

错误:

(Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.):
SQL:


请参见以下变通方法以供参考:

尝试在sql代码的可疑区域打印@@TranCount,以获取事务计数。 尝试通过启用调试来执行相同的操作。 有一个很好的答案可能会有所帮助
DECLARE @MessageType sysname
DECLARE @ConversationHandle uniqueidentifier
DECLARE @RawRemittanceAdviceId int
DECLARE @ClrReturnCode int
DECLARE @WebServiceUrl nvarchar(512)
DECLARE @ErrorMessage nvarchar(MAX)

BEGIN 
BEGIN TRANSACTION

WAITFOR (
            RECEIVE TOP (1)
                  @MessageType = message_type_name
                , @RawRemittanceAdviceId = message_body
                , @ConversationHandle = conversation_handle
            FROM [RawRATranslationChannel]
        ), TIMEOUT 5000 -- 5 seconds

IF (@@ROWCOUNT = 0)
    BEGIN
        ROLLBACK TRANSACTION
    END
ELSE
    BEGIN
    -- Check for end of dialog messages
    IF (@MessageType = 'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog')
        BEGIN
            END CONVERSATION @ConversationHandle
        END
    ELSE IF (@MessageType = 'http://schemas.microsoft.com/SQL/ServiceBroker/Error')
        BEGIN
            -- Handle the error
            BEGIN
                -- Add Error Message
                UPDATE [dbo].[RawRemittanceAdvice]
                SET DiagnosticMessage = N'Service Broker Error', ProcessingStatus = 2, LastUpdated = GETUTCDATE()
                WHERE RawRemittanceAdviceId = @RawRemittanceAdviceId
            END
            END CONVERSATION @ConversationHandle
        END
    ELSE IF (@MessageType = 'TranslateRawRA')
        -- Perform Translation of the Raw Remittance Advice
        BEGIN
            BEGIN TRY

                SELECT @WebServiceUrl = SettingValue
                FROM dbo.GlobalSettings
                WHERE SettingName = N'TranslationWebServiceUrl'

                -- Call CLR Sproc to perform Translation
                EXEC @ClrReturnCode = [dbo].[TranslateRawRemittanceAdvice] @RawRemittanceAdviceId, @WebServiceUrl, @ErrorMessage OUTPUT

                IF @ClrReturnCode = 0
                    BEGIN
                    -- Send Response
                    SEND ON CONVERSATION @ConversationHandle
                    MESSAGE TYPE [TranslateRawRAResponse]
                    (CAST(@RawRemittanceAdviceId AS NVARCHAR))
                    END
                ELSE
                    BEGIN
                        -- Add Error Message
                        UPDATE [dbo].[RawRemittanceAdvice]
                        SET DiagnosticMessage = @ErrorMessage, ProcessingStatus = 2, LastUpdated = GETUTCDATE()
                        WHERE RawRemittanceAdviceId = @RawRemittanceAdviceId
                    END

            END TRY

            BEGIN CATCH
                BEGIN
                    -- Add Error Message
                    UPDATE [dbo].[RawRemittanceAdvice]
                    SET DiagnosticMessage = ERROR_MESSAGE(), ProcessingStatus = 2, LastUpdated = GETUTCDATE()
                    WHERE RawRemittanceAdviceId = @RawRemittanceAdviceId
                END
            END CATCH

            END CONVERSATION @ConversationHandle

        END
    COMMIT TRANSACTION
END
END