【事件始末】
今接到某客户来电,反馈使用的 某酒店管理系统,很多年了,正版软件!
突然发现所有报表系统功能打不开!
打开提示酒店管理系统 服务器:消息 666,级别 16,状态 1,行 1 用于重复组的系统生成唯一值超过了最大值。除去并重新创建索引可能会解决该错误;否则可使用其他聚集索引。
不管是还原老旧备份,还是重装软件问题依旧,无法自己解决。
客户查询报表结算账期,情况比较紧急,于是求助我们。
出于对客户的尊重,连夜加班研究了1-2小时,也总是圆满解决问题了。
【问题分析】
我查询了SQL SERVER错误字典,发现微软SQL官方解释文档 并无此错误。
【解决心得】
经过大量排序跟踪数据库工具,发现程序 在输入密码账号后,
会读取一次 cyuserinfo 表,获取了v_regno1 ,v_regno2 ,v_regno3 表值后,经过计算。
如果不满足要求会修改 v_regno2 表值,应该是锁死操作吧
在此时程序已经完成限制检测了,正常进入软件主界面。
如果不点击报表系统,不会有任何反应和痕迹。点击报表系统后才会报错。
【大致解决思路】
1.第一位的当然是及时备份好数据,做了备份想怎么玩都可以,
2.断开所有客户端连接。禁止其他客户端在写入新的数据,防止回滚导致数据丢失。