为什么sql server 会自动回滚事务?

fox2002 2003-09-05 04:19:48
问一下各位:
今天上午我的程序又出问题了,客户端连接服务端读写数据。因为发现检索不正常,所以我停止了sqlserver的几个服务,然后重启了几个服务,悲惨的事情发生了,所有上午程序所作的修改全部被回滚了,变成了初始状态。请问各位知不知道是什么原因,有没有什么办法让数据恢复到重启服务前的状态?谢谢!
...全文
296 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallroad 2003-09-05
  • 打赏
  • 举报
回复
begin tran
...
commit tran
是否规范
litf 2003-09-05
  • 打赏
  • 举报
回复
应该可以恢复,数据库都考虑系统崩溃的情况。
zhouzdsoft 2003-09-05
  • 打赏
  • 举报
回复
SQL Server 实例在事务日志中记录多种不同类型的信息。SQL Server 2000 实例主要将所执行的逻辑操作记入日志。重新应用操作将前滚修改,反向执行逻辑操作将回滚修改。

每个 SQL Server 实例都控制将修改从其数据缓冲区写入磁盘的时间。SQL Server 实例可以将修改在缓冲区内高速缓存一段时间以优化磁盘写入。包含尚未写入磁盘的修改的缓冲区页称为脏页。将脏缓冲区页写入磁盘称为刷新页。对修改进行高速缓存时,务必注意确保在将相应的日志映像写入日志文件之前没有刷新任何数据修改。否则将产生不能在需要时进行回滚的修改。为确保能恢复所有修改,SQL Server 实例使用预写日志,这意味着所有日志映像都在相应的数据修改前写入磁盘。

提交操作将事务的所有日志记录强行写入日志文件,以使事务可以完全恢复,即使服务器已经关闭。只要所有日志记录都已刷新到磁盘,提交操作便不必将所有修改的数据页都强行刷新到磁盘。系统恢复可以只使用日志记录前滚或回滚事务。

zhouzdsoft 2003-09-05
  • 打赏
  • 举报
回复
每个 Microsoft® SQL Server™ 2000 数据库都有一个事务日志记录数据库内的数据修改。日志记录每个事务的开始和结束并将每个修改与一个事务相关联。SQL Server 实例在日志中存储足够的信息以恢复(前滚)或撤消(回滚)构成事务的数据修改。日志中的每条记录都由一个唯一的日志序号 (LSN) 标识。事务的所有日志记录都链接在一起。

zhouzdsoft 2003-09-05
  • 打赏
  • 举报
回复
sql server在启动时如遇到错误就进行事物回滚,通过检查点回滚到上一个正确的检查点
txlicenhe 2003-09-05
  • 打赏
  • 举报
回复
有这种事?

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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