【问题标题】:NHibernate.StaleStateException: Batch update returned unexpected row count from update; actual row count: -1;NHibernate.StaleStateException:批量更新从更新返回了意外的行数;实际行数:-1;
【发布时间】:2019-01-18 00:26:58
【问题描述】:

突然,NHibernate 上针对 SQL Server 运行的所有更新查询都开始返回异常 NHibernate.StaleStateException: Batch update returned unexpected row count from update; actual row count: -1;

怀疑数据库服务器本身的一些变化导致了这个,不确定是什么。

【问题讨论】:

  • 我无法与 nhibernate 对话,但是当使用 SET NOCOUNT ON 会话设置运行查询时,大多数客户端 API 会返回 rowcount -1。可能是配置或存储过程更改将设置从默认的SET NOCOUNT OFF 更改为SET NOCOUNT ON
  • 感谢@DanGuzman - 这让我走上了正确的道路。

标签: sql-server hibernate nhibernate


【解决方案1】:

毕竟这是一个服务器设置 - 有人设置了用户选项 NOCOUNT 标志,阻止 NHibernate 报告行数:

为了解决这个问题,我必须从以下位置设置值(注意右侧的第十位):

0111 0111 1000 = 1912

收件人:

0101 0111 1000 = 1400

EXEC sp_configure 'user options', 1400;
GO  
RECONFIGURE;  

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-user-options-server-configuration-option?view=sql-server-2017

希望这对将来的人有所帮助。

【讨论】:

  • 我看到有人在服务器级别设置了 NOCOUNT 选项。就个人而言,我会避免这种情况,并且仅在需要时在会话或过程级别进行。与其他用户选项相同。
猜你喜欢
  • 1970-01-01
  • 2012-01-11
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多