作者
用户名:tyk
积    分:1591
成员组:会长
  栏目名  好东西         
ASP.NET事务和异常处理
评论数:0  点击数:579   发表时间:2009-4-10 10:27:57

1.1什么是事务处理?
• 事务是一组组合成逻辑工作单元的数据库
操作,虽然系统中可能会出错,但事务将
控制和维护每个数据库的一致性和完整性。
• 如果在事务过程中没有遇到错误,事务中
的所有修改都将永久成为数据库的一部分。
• 如果遇到错误,则不会对数据库作出任何
修改。
1.2事务处理过程
1. 开始一个事务。进入“事务待命”状态。
2. 在“事务待命”状态,记录事务中改变的数据库记录。此
改变不能直接改变数据库中的值,必须先用一个顺序
的“事务日志”记录在一边。同时,对于要改变的原始记
录加锁,让其它用户无法读和写。如果记录已经被其
它事务加锁,则报错。
3. 在“事务待命”,如果用户给出commit transaction命
令,则进入“事务拷贝”状态,拷贝所有加锁的记录成备
份。
4. 上面3执行完,则进入“事务更新”状态,用“事务日志”中
记录一一更新实际的数据库记录。
5. 上面4执行完,则进入“事务结束”状态,释放所有的记
录锁,然后抛弃“事务日志”和备份的原数据库记录。
6. 上面5做完后,事务被删除
事务处理过程
但是,最为关键的是,事务系统必须执行
以下过程:一但数据库由于软件、硬件问
题发生故障,重启动后,一旦有事务没正
常删除,则:
– 7. 如果在“事务待命”、“事务结束”状态,则重新
从5中结束事务的动作开始执行。
– 8. 如果在“事务更新”状态,则重新从4开始更新
记录,并继续想下执行。结果,虽然系统崩溃
过,但事务仍然能正常提交。
1.4事务处理有关事项
• 事务处理的关键是在提交事务或者取消事务时,
万一系统崩溃了,数据库在再次启动时,仍然需
要保持数据可逻辑一致性。
• 应用中包含的事务应当尽量让它“瞬间”完成,避
免在比较忙时造成用户进程的互锁。
• Informix、Oracle、DB2等数据库的实际事务处理
流程更复杂,目的是具有更好的抵抗系统错误性
质,因为事务保护是业务系统安全稳定的最后一
道防线。
事务处理方法
• 直接写入SQL
• 通过ADO.NET实现
• COM+事务(分布式事务)
2.1直接写入SQL
• 在存储过程中使用BEGIN TRAN,
COMMIT TRAN, ROLLBACK TRAN实现
• 优点:
– 所有事务逻辑包含在一个单独的调用中
– 拥有运行一个事务的最佳性能
– 独立于应用程序
• 限制:
– 事务上下文仅存在于数据库调用中
– 数据库代码与数据库系统有关
CREATE PROCEDURE [SqlAction] AS
begin TRAN
declare @UserInfoError int
delete fr

第1页 | 23456789
相关评论
发表评论
请输入验证码:   看不清?点击更换