Sql 执行更新存储过程时出现并发问题

Sql 执行更新存储过程时出现并发问题,sql,sql-server,error-handling,Sql,Sql Server,Error Handling,当一个存储过程被两个或多个实例同时执行时,我会遇到这个错误 对系统版本表“dbo.table”的数据修改失败,因为受影响记录的事务时间早于时段开始时间 如何以最有效的方式防止此错误发生?dbo.Table未在过程中引用。表别名b和d被引用,但没有分配给任何表。 ALTER PROCEDURE [dbo].[UpdateColumn] @ChangeColumn int, @column3 uniqueidentifier

当一个存储过程被两个或多个实例同时执行时,我会遇到这个错误

对系统版本表“dbo.table”的数据修改失败,因为受影响记录的事务时间早于时段开始时间


如何以最有效的方式防止此错误发生?

dbo.Table未在过程中引用。表别名b和d被引用,但没有分配给任何表。
ALTER PROCEDURE [dbo].[UpdateColumn]  
    @ChangeColumn int,       
    @column3 uniqueidentifier                      
AS  
BEGIN  
    SET NOCOUNT ON; 
 
    BEGIN TRANSACTION 
    BEGIN TRY

        UPDATE d 
        SET changecolumn = @ChangeColumn
        FROM dbo.table2 a 
        INNER JOIN dbo.table3 ON a.column2 = b.column2 
                              AND b.column3 = @column3 
        COMMIT;
    END TRY 
    BEGIN CATCH 
        IF (XACT_STATE()) = 1  
        BEGIN 
            SELECT 'ERROR - The action was unsuccessful.' as MSG 

            ROLLBACK TRANSACTION 
        END 

        INSERT INTO dbo.catcherror (UserName, ErrorNumber, ErrorState, 
                                    ErrorSeverity, ErrorLine, ErrorProcedure, 
                                    ErrorMessage, ErrorDateTime, 
                                    DatabaseName, SPID, ErrorDetails) 
        VALUES (@AuditUserName, ERROR_NUMBER(), ERROR_STATE(), 
                ERROR_SEVERITY(), ERROR_LINE(), ERROR_PROCEDURE(), 
                ERROR_MESSAGE(), GETUTCDATE(), 
                DB_NAME(), @@SPID, 
                (CONCAT('@ChangeColumn:', ' ' , @ChangeColumn) + CONCAT('@column3d:', ' ' , @column3))) 

        IF (XACT_STATE()) = 1  
        BEGIN  
            PRINT N'The transaction is committable.' +  
                'Committing transaction.'  
            COMMIT TRANSACTION;     
        END;  
    END CATCH
END