转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
在ADO.NET中使用事务保护数据的完整性(2)         ★★★★

在ADO.NET中使用事务保护数据的完整性(2)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:832 更新时间:2009/4/23 10:46:57

事务剖析

事务最基本上包含两个步骤 – 开始, 然后是提交或回滚. 开始调用定义了事务的边界, 同时调用提交或回滚在定义结束. 在事务边界内, 所有的执行描述被认为是完成任务的一部分, 必须作为成功或失败的一种. 如果一切都成功提交将会执行所有的数据修改, 如果有任何错误发生, 回滚将会取消修改. 所有的.Net 数据提供对象提供了类似的类和方法来完成这些操作.

孤立等级

孤立等级在事务中界定事务孤立行为. 越是孤立等级越高, 数据越不会被别的事务干扰. 许多数据库通过加锁来增强孤立等级. 你应该实行两次检查你目标DBMS使用.好的做法是在性能和并发上折衷, 较多的锁系统将不得不维护, 越多的话容易造成冲突并且会降低速度对于不同的处理来说.

以下列表是孤立等级对于ADO.Net的支持, 来自于.Net Framewok SDK. 以下列表孤立等级限制性越来越强.

 

Member name

Description

Value

Unspecified

Supported by the .NET Compact Framework.

A different isolation level than the one specified is being used, but the level cannot be determined.

-1

Chaos

Supported by the .NET Compact Framework.

The pending changes from more highly isolated transactions cannot be overwritten.

16

ReadUncommitted

Supported by the .NET Compact Framework.

A dirty read is possible, meaning that no shared locks are issued and no exclusive locks are honored.

256

ReadCommitted

Supported by the .NET Compact Framework.

Shared locks are held while the data is being read to avoid dirty reads, but the data can be changed before the end of the transaction, resulting in non-repeatable reads or phantom data.

4096

RepeatableRead

Supported by the .NET Compact Framework.

Locks are placed on all data that is used in a query, preventing other users from updating the data. Prevents non-repeatable reads but phantom rows are still possible.

65536

Serializable

Supported by the .NET Compact Framework.

A range lock is placed on the data set, preventing other users from updating or inserting rows into the dataset until the transaction is complete.

1048576

小注: 无序的孤立等级是不被SQL Server 或 Oracle 支持的, 只有OLEDB 数据提供对象将会作为孤立等级设置事务接受它. 如果试图用SQL Server 或Oracle 设置它,将会得到一个ArgumentException, 指明无效的孤立等级参数.

Sql Server 和 Oracle 和 OLE DB 数据提供对象默认为ReadCommitted 孤立等级. ODBC 数据提供对象默认孤立等级各不相同, 依赖于ODBC的驱动的不同. 如果你考虑ReadCommitted 不是你想要的孤立等级, 你可以使用Transaction.IsolationLevel 属性来 指定不同的等级. 你应该非常慎重考虑修改这些设置,虽然, 执行适当的测试来保证,这些变化不能影响数据的一致性,或其它的并发问题. 如果有数据库管理员, 你应该向他们请教关于特定任务的恰当等级.你也应该查看数据库文档来看你的数据库是如何处理孤立等级和锁的.

局部回滚

通常情况下,如果一个事务发生错误,你会发现你想回滚的地方并不是整个事务.只有当你完全成功处理完某个事务需要大量的时间时,你希望会这样做. 但检查部分执行成功将会开销很大. 你要平衡数据修改成本和不得不回滚一些小的的部分来避免开支过大.

部分回滚通常使用savepoints或者是内嵌事务, 主要依赖于你的数据库是如何工作的. 一些DBMS 或者不提供这种机制,因此查看你的数据库文档看是否或如何实现局部回滚.

Sql Server 和 Oracle 允许使用 savepoints (当造成回滚时你可以引用)来停止回滚在预定的点.他们不真正的执行内嵌的事务,另外的一些DBMSs来完成同样的工作. Sql Server 在最简单的意义上允许使用内嵌的事务, 你可以使用内嵌的开始...提交T-Sql块语句.然而, 只有在提交以外事实上提交了所有的事务,在提交过程以内仅仅是消耗系统变量,因此你可以跟踪多少事务你有多少已经打开的事务.

一些数据库执行了真正的内嵌事务. 对这些数据类型来说,内嵌的提交将会实际上提交响应的事务,即使外部的事务回滚内嵌事务仍然会提交.

 

 


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台