首页 > 解决方案 > SQL Server 存储过程在从另一个服务器/框架调用时不执行命令,但在本地工作

问题描述

我创建了一个 SQL Server 存储过程,其中包含插入和更新语句以及日志表。当我使用本地执行存储过程时

EXEC stored_procedure_name param1

它工作得很好,日志条目被插入到日志表中;但是当使用相同的 SQL Server 用户从另一台服务器调用相同的存储过程时,会调用存储过程并且正确的输出/响应将转到调用服务器,但不会执行插入和更新语句,也不会插入任何日志。

同样,当我在本地调用存储过程时,一切正常。当我检查日志表中的条目(Id列为identity(1,1))时,有 2 个条目的 id 为 1 和 3。

我认为 Id = 2 的条目已插入,然后在从另一台服务器调用时回滚。

我不明白不同的行为。请帮忙。

提前致谢

ALTER PROCEDURE [dbo].[temp_procedure] 
    (@aid VARCHAR(MAX))
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @RETURN_CODE INT = -2;
    DECLARE @RETURN_MESSAGE VARCHAR(MAX) = 'ENTITY NOT FOUND';

    -- Check IF exist and  Update
    IF EXISTS (SELECT 1 FROM temp WHERE c = @aid)
    BEGIN
        UPDATE temp
        SET a = 0, b = 0,               
        WHERE c = @aid;

        SET @RETURN_CODE = 0;
        SET @RETURN_MESSAGE = 'SUCCESS';
    END

    -- Log action and result in logging table for particular a_id
    -- also has id column as identity
    INSERT INTO [dbo].[Logs] ([A_Id], [Created_Date], [Return_Code], [Return_Message])
    VALUES (@aid, GETDATE(), @RETURN_CODE, @RETURN_MESSAGE)

    SELECT @RETURN_CODE AS 'RETURN_CODE', @RETURN_MESSAGE AS 'RETURN_MESSAGE';
END

标签: sql-serverstored-proceduresrollbacksql-execution-plan

解决方案


推荐阅读