sql - SQL Server 是否可能报告不正确的受影响行数?

我有一个实用程序:

  1. 从平面文本文件中获取 sql 命令
  2. 对位于同一台机器上的 SQL Server 按顺序执行它们
  3. 如果更新命令影响零行则报告错误(此文件中不应该有不影响记录的更新命令,因此它被记录为错误)

该实用程序还会记录任何失败的命令。

然而,数据库中的最终数据似乎是错误的/陈旧的,即使我的实用程序报告没有失败的更新和失败的命令也是如此。

我知道第一个也是最明显的罪魁祸首是我对实用程序本身的编程中的某种逻辑或运行时错误,但我只需要知道 SQL Server 理论上可能报告至少一行受到影响并且尚未应用更改。

如果有帮助,该实用程序似乎总是正确地执行相同数量的命令,并且最终的陈旧/错误数据总是相同的,即它似乎正确地执行了一定数量的命令,这些命令正在对数据库成功查询,然后失败。

谢谢。

编辑:

我还应该注意到,该实用程序在 4 个不同的生产服务器上表现出这种行为,每个生产服务器都有自己专用的本地数据库服务器,而且这些机器都是由专业系统管理员管理的强大机器,每台机器都有 8-16 GB RAM。

最佳答案

根据你所说的...

如果您触发了触发器,“xx 行受影响”可能会产生误导。您可能正在读取触发器的计数。如果是这样,将 SET NOCOUNT ON 添加到触发器

或者,数据相同,因此您实际上使用相同的值进行虚拟更新。例如,添加一个 WHERE 子句来测试差异。

https://stackoverflow.com/questions/7124994/

相关文章:

spring - 通过 spring 注释进行的交易 - 只读与否?

sql-server - 检查是否启用了复制

php - 如何在 codeigniter form_validation 类中允许空值或数值?

perl - 这个 zip 命令是如何在 perl 中使用的?

web-services - 对于可能返回过时数据的 GET 请求,我应该使用什么 HTTP 状态代

MongoDB - 添加到集合并递增

string - 如何将使用 Windows 代码页 1251 编码的字符串转换为 Unicode

qt - 如何禁用 QTableWidget 滚动到选定的单元格?

Wordpress - 删除特定自定义帖子类型的自动生成的段落

geodjango - Django-profiles,带有地理字段的用户配置文件?