当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 通过事务日志解决SQL Server常见四大故障(二)

MSSQL
SQL Server 中死锁产生的原因及解决办法
教你在SQL Server 2000数据库中使用分区
数据仓库基本报表制作过程中的SQL写法
自动定时重启sql server回收内存
轻松解决SQL Server 2005中的常见问题
用一个案例讲解SQL Server数据库恢复
安装SQL Server 2005时出现计数器错误
讲解SQL Server 2005数据库的同义词Bug
利用SQL语句对不同数据库进行高效果分页
三种数据库利用SQL语句进行高效果分页
数据库连接字符串的常见问题和解决方法
教你快速掌握一些方便易用的SQL语句
深入分析SQL Server的数据转换服务
系统默认的MySQL用户名消失的解决方法
SQL 2008邮件故障排除:发送测试电子邮件
SQL Server 2005日志文件损坏的处理方法
在SQL Server 2005数据库中进行错误捕捉
SQL Server查询速度慢原因及优化方法
加密SQL Anywhere 提升政府行业数据安全
Windows Server 2008之数据安全保护

MSSQL 中的 通过事务日志解决SQL Server常见四大故障(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 128 ::
收藏到网摘: n/a

数据库镜像方案有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步,一旦同步了数据库,事务将在伙伴双方处提交,这会延长事务滞后时间。第二种运行模式,即高性能模式,它与第一种模式的主要差异就在于异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。镜像数据库可能稍微滞后于主体数据库。但是,数据库之间的时间间隔通常很小。但是,如果主体服务器的工作负荷过高或镜像服务器系统的负荷过高,则时间间隔会增大。在高性能模式中,主体服务器向镜像服务器发送日志记录之后,会立即再向客户端发送一条确认消息。它不会等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。具体采用哪种模式,则需要数据库管理员根据企业对待数据损失的态度与工作负荷等来确定。

可见现在可用的备份服务器与生产服务器之间的数据同步解决方案都是基于事务日志来实现的。

故障三:解决数据一致性问题。

假设现在有这么一种情况。在一个银行系统中,某个用户需要转帐。这个转帐作业主要是通过两个步骤来完成。第一个步骤就是扣减用户帐户中的金额;第二个步骤是把钱转入到另外一个用户那里。现在如果在转帐的过程中,第一步成功了,但是第二个步骤因为某种原因出错了。如用户提供的帐户名字与实际转帐的帐户名字不符,则第二个操作就会失败。此时整个转帐操作就会以失败而告终。但是现在的问题是,第一个扣减的动作在数据库zhon给已经完成了。而实际却是没有转帐成功,就救造成了数据一致性的问题。

实际过程中如果应用程序发出 ROLLBACK 语句,或者数据库引擎检测到错误,就使用日志记录回滚未完成的事务所做的修改。也就是说,当第二个操作失败的话,应用程序要发出一个ROLLBACK 语句,利用事务日志回滚功能,恢复第一步的操作。也就是说,把扣减金额的操作进行恢复,从而实现数据的一致性。类似的应用,在数据库开发过程中很频繁。

故障四:数据库时点恢复的问题。

如现在遇到这么一种故障。数据库系统在上午11点突然发现故障,启动不起来了。而数据库系统是在昨天晚上12点刚做完一个完全备份。在这种情况下,如果只是从完全备份中恢复数据的话,只能够恢复到昨天晚上12点的数据。那从昨天晚上12点到今天上午11点的数据就不能够恢复了吗?

其实不然。因为用户在对数据库做的任何一个修改都会保存在事务日志当中。为此只要事务日志不损坏的情况下,数据库管理员可以把数据恢复到上午11点那个时刻的数据。具体的操作方法很简单,就好先利用完全备份文件恢复数据库系统,此时数据库中的数据位昨天晚上12点的数据。然后再利用日志恢复功能把数据恢复到今天上午11点的数据。可见事务日志可以帮助管理员把数据恢复到某一个具体的时点。