sqlserver 数据被回滚了。

sky1314 2017-07-25 10:27:00

公司自己研发的一个小OA 系统,数据库sqlserver。录入的数据时常会被回滚。而且是多个表的记录。并且是部分数据被回滚。

完全没有头绪去查。

群里面的朋友给个思路。
...全文
603 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-07-25
  • 打赏
  • 举报
回复
引用 3 楼 sky1314 的回复:
[quote=引用 1 楼 yenange 的回复:] 你怎么知道被回滚了? 用了很多的事务? 建议你在程序里尽可能多的加上日志, 这样到底哪一步出问题就清清楚楚的了
对,用了很多事务,因为是多个人员开发的,有在存储过程里面用的,有的C# 代码里面用的。 目前情况 是某个时间段的操作(是对多张表),操作的记录全部回滚。[/quote] 目前情况 是某个时间段的操作(是对多张表),操作的记录全部回滚 表中已经有过数据,然后又没了?
OwenZeng_DBA 2017-07-25
  • 打赏
  • 举报
回复
引用 3 楼 sky1314 的回复:
[quote=引用 1 楼 yenange 的回复:] 你怎么知道被回滚了? 用了很多的事务? 建议你在程序里尽可能多的加上日志, 这样到底哪一步出问题就清清楚楚的了
对,用了很多事务,因为是多个人员开发的,有在存储过程里面用的,有的C# 代码里面用的。 目前情况 是某个时间段的操作(是对多张表),操作的记录全部回滚。[/quote] 还是没有回答你怎么知道被回滚了。程序和存储过程都加上try catch ,并在catch 中记录日志。一般回滚可能是超时或者某些错误导致的。找到这个错误的原因先
sky1314 2017-07-25
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
你怎么知道被回滚了? 用了很多的事务? 建议你在程序里尽可能多的加上日志, 这样到底哪一步出问题就清清楚楚的了
对,用了很多事务,因为是多个人员开发的,有在存储过程里面用的,有的C# 代码里面用的。 目前情况 是某个时间段的操作(是对多张表),操作的记录全部回滚。
二月十六 2017-07-25
  • 打赏
  • 举报
回复
回滚可能和事务有关,程序可以使用使用,来保证一次连接所以操作数据库的操作都在一个事务里,成功则一次提交执行,失败则全部回滚;另外数据库中也可以使用事务,效果一样; 所以先确定一下是不是有事务,事务在程序还是数据库。
吉普赛的歌 2017-07-25
  • 打赏
  • 举报
回复
你怎么知道被回滚了? 用了很多的事务? 建议你在程序里尽可能多的加上日志, 这样到底哪一步出问题就清清楚楚的了
OwenZeng_DBA 2017-07-25
  • 打赏
  • 举报
回复
数据库还原的话是有记录的,可以检查下。 数据是被删除了还是更新了,另外可以用traces针对这个表跟踪下,看是什么语句删除的,,
sky1314 2017-07-25
  • 打赏
  • 举报
回复
引用 7 楼 sinat_28984567 的回复:
[quote=引用 6 楼 sky1314 的回复:]

对的表中已经有数据,而且是过1个多小时后,没有的。


这样的应该不是事务问题了,如果是事务的表中应该不会有数据,只有再最后事务完成提交的时候表中才会有数据,而且在事务执行过程中表都是处在锁定状态也不能操作数据……

所以检查一下是不是有什么删除操作?[/quote]

有没有可能是数据库遇到异常。数据自动恢复到某个时间点?最近数据被人搞。这是截图,

引用 7 楼 sinat_28984567 的回复:
[quote=引用 6 楼 sky1314 的回复:]

对的表中已经有数据,而且是过1个多小时后,没有的。


这样的应该不是事务问题了,如果是事务的表中应该不会有数据,只有再最后事务完成提交的时候表中才会有数据,而且在事务执行过程中表都是处在锁定状态也不能操作数据……

所以检查一下是不是有什么删除操作?[/quote]

这个是首先核查的,确定 没有。
我想是不是数据库本身出了异常。然后恢复到前面的某个时间点呢。

另外我们数据库,最近有人在用sa偷连,但是被我禁用的。
二月十六 2017-07-25
  • 打赏
  • 举报
回复
引用 6 楼 sky1314 的回复:
对的表中已经有数据,而且是过1个多小时后,没有的。
这样的应该不是事务问题了,如果是事务的表中应该不会有数据,只有再最后事务完成提交的时候表中才会有数据,而且在事务执行过程中表都是处在锁定状态也不能操作数据…… 所以检查一下是不是有什么删除操作?
sky1314 2017-07-25
  • 打赏
  • 举报
回复
引用 5 楼 sinat_28984567 的回复:
[quote=引用 3 楼 sky1314 的回复:] [quote=引用 1 楼 yenange 的回复:] 你怎么知道被回滚了? 用了很多的事务? 建议你在程序里尽可能多的加上日志, 这样到底哪一步出问题就清清楚楚的了
对,用了很多事务,因为是多个人员开发的,有在存储过程里面用的,有的C# 代码里面用的。 目前情况 是某个时间段的操作(是对多张表),操作的记录全部回滚。[/quote] 目前情况 是某个时间段的操作(是对多张表),操作的记录全部回滚 表中已经有过数据,然后又没了?[/quote] 对的表中已经有数据,而且是过1个多小时后,没有的。
jjsoul19800216 2021-07-03
  • 举报
回复
@sky1314 你怎么解决的,我也遇到这样的问题

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧