sql-server - 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
解决方案
推荐阅读
- javascript - 如何从 Linechart (Apexchart) 中删除网格
- google-cloud-platform - 使用 Google MQL 从分布中绘制多个百分位数
- android - 如何使用协程将数据从存储库传递到 ViewModel
- python - 使用python创建文件夹和子文件夹时出错
- ruby-on-rails - 登录状态未在应用之间共享
- python - 如何检查文件中的所有文件夹和文件中的子文件夹是否存在特定字符串
- reactjs - 输入元素标签在点击按钮时更新状态
- awk - 有没有办法使用 grep 将字符串括在双引号之间?字符串可以是任何东西,但应该用引号括起来
- azure - Azure API 首选:return=minimal header
- moodle - Moodle消息不能发送“<”符号?