数据库: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所花时间大概是十分钟左右,三个超时时间都是几个小时。