Window2008R2企业版 +MSSQL2005 64位 只安装sp4补丁
情况如下
步骤1
首先先插入表WorkToDo
然后插入表WorkPrcs
步骤2
修改表WorkToDo 的修改JieDianID 字段改成973
然后修改表WorkPrcs 的PrcsFlag字段 改成3
新增记录 一条或者三四条
大约几分钟 或几小时不等 大约十分之一的几率 55766 55767失踪.消失前是能够看到的,步骤2中更新的记录正常.
步骤2可能会执行几次,如果记录消失的话,还是只有第一次增加的记录
事后查询
结果是这样的
1在线开启SQL Server Profiler 追踪不到删除的SQL语句,没有死锁
2程序中没有删除的语句
3步骤二启用事务 (修改+添加)操作,添加的还是消失了,修改的记录保持
出现几率大增,约50%
4重新创建表WorkPrcs,复制原有数据,一天后问题依旧
奇怪的是表WorkPrcs,每次第一次插入的记录存在
log explorer 中看到有删除的记录 旁边的user_transaction 是指因为事物而删除么?
检查一下有没有触发器,如果没有就写一个删除的触发器,记录一下操作时间,然后看这个时间点系统在干啥。
这个可以试试
开启触发器后看到了惹祸的语句...应该早点弄触发器的.一开始 用SQL Server Profiler 追踪不到删除的SQL语句,就认为不是sql语句的问题..走了弯路
你是使用的 Sql Managerment Studio 做的你如图的操作吗?
是的
@dd102: 你新建个库,然后新建这两张表,按照这个流程再测试下。
@Launcher: 我在擦入表WorkPrcs 的同时,将相同的记录插入表ss,发现 表ss的记录没有丢失
@dd102: 你新建个库,然后新建这两张表,按照这个流程再测试下。
你的程序是多线程程序吧,数据并发时自增列会出问题,然后就回滚了
是web网站,自增列会有问题么?
@dd102: web站点会出现数据并发,自增列不适合出现在数据插入频繁的表中
@ZQT: 那天8小时总共才插入了100条记录,有问题的约20条,并发很少的,后来在自己电脑用Selenium模拟操作,插了三千多条..一切正常
@ZQT: 写了个测试页 表WorkPrcs插入记录,两个电脑多线程并发访问 30S内2w个请求..一个都没有错