为什么DbCommand.ExecuteNonQuery()执行merge into返回负数?

数据库:Azure SQL (MS Sql Server的Azure版本)
程序语言:C#.NET

System.Data.Common.DbCommand.ExecuteNonQuery()执行merge into语句不清楚为什么返回负数,有人遇到过类似的问题吗?
程序运行了大半年一直返回的都是大于等于0的值,最近不清楚什么原因突然出现负数了。
本地一直没法重现,而且同一段sql有时候返回的不是负数,有时候又返回负数,所以一直找不到原因。

执行的merge into语句结构如下:
MERGE 
INTO TABLE_A AS A 
  USING ( 
    SELECT ...
  ) AS B 
    ON ( 
      ...
    ) WHEN MATCHED THEN UPDATE 
SET
  ...
WHEN NOT MATCHED THEN 
INSERT (
  ...
)
VALUES ( 
  ...
);

可以参考这篇文章,希望对你有帮助:ExecuteNonQuery返回负数 - HongMaJu - 博客园 (cnblogs.com)

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

这个问题我已经通过缩短SQL执行的时间间接解决了。

说下我这边调查的结果:
因为某次修改SQL无意中让SQL执行时间变慢了很多,发现重现了返回-1的问题。
我猜测可能跟时间有关,但是因为程序开始运行到返回-1所花的时间远小于数据库连接超时时间、事务超时时间、命令超时时间这三个时间,所以最终也没有找出实际原因是什么。

※SQL开始执行到返回-1所花时间大概是十分钟左右,三个超时时间都是几个小时。