Oracle与SQL Server事务处理的比较
Oracle与SQL Server比较

Oracle可在所有主流平台上运行,包括Windows、Unix、Linux等等。同时Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。对开发商来说是很大的支持。而SQL Server却只能在Windows上运行了,显得比较单调。从操作平台这点上Oracle是完全优胜于SQL Server的了。
Oracle与SQL Server比较
一、 操作平台
操作系统的稳定对数据库来说是十分重要的,由于SQL Server与Windows操作系统同属Microsoft公司的产品,所以在和Windows操作系统的整体结合程度、使用方便性、和Microsoft开发平台的整合性都比Oracle强的很多;但是Windows操作系统的稳定性及可靠性大家是有目共睹的,并且 Microsoft公司的策略目标是将客户都锁定到Windows平台的环境当中,只有随着Windows性能的改善,SQL Server才能进一步提高。
4. 临时表
SQL Server创建的临时表在创建后会由数据库自动回收。而Oracle的全局临时表会一直存在,但是其中数据在提交后会全部清除。
5. 帮助文档
SQL Server提供详细的中文说明文档,但是Oracle本身并不提供中文说明文档。最起码说明在针对中国市场上,Oracle并不如SQL Server态度积极。
三、 数据库管理
1. Oracle是针对表空间和用户来进行管理,而SQL Server是以针对单独的数据库进行管理。换另一种说法也就是,Oracle的数据权限分配是以用户可以访问哪些表作为依据。而SQL Server是以特定数据库中哪些用户可以访问作为依据。
SQLserver和Oracle的优劣对比

SQLserver和Oracle的优劣随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高。
Oracle数据库在大多数企业中受到广泛使用,而SQL Server数据库也因为和Windows 的联系,在企业中的使用也是非常广泛。
这边说Oracle数据库有如此这般功能,那边又说SQL Server这些个那些个特性,各持己见。
如今大型关系型数据库多数单位都使用的是Oracle数据库,Oracle数据库的安全理涉及很多方面,比如控制数据的一致性和并行性,建立不同安全域的用户组与用户,以及不同客户连接的不同权限,管理员对不同用户的角色和权限的控制,建立足够有效的审计安全策略等。
SQL Server是一个关系数据库管理系统,它是建立在Windows的可伸缩性和可管理性之上,提供功能强大的客户/服务器平台,高性能客户/服务器结构的数据库挂历系统可以将VisualBasic,VisualC++等众多语言作为客户端开发工具,而将SQL Server作为存储数据的后台服务器软件,随着SQL Server产品性能的不断扩大和改善,已经在数据库系统领域占有非常重要的地位。
下面我们将从以下几方面对SQL Server和Oracle的优劣进行对比:1.开放性:SQL Server:SQL Server只在Windows上运行,没有丝毫的开放性,Microsoft这种专有策略的目标是将客户锁定到Windows环境中。
由于SQL Server紧密的捆绑在Windows平台上,所以,只有随着Windows操作系统可靠性、开放性以及性能的改善,SQL Server的开放性和可靠性才能进一步提高,因此操作系统的系统的稳定对数据库是十分重要的。
windows9x系列产品是偏重于桌面应用,nt server只适合中小型企业。
而且windows平台的可靠性,安全性和伸缩性是非常有限的。
它不象unix那样久经考验,尤其是在处理大数据量的关键业务时。
数据库管理系统比较MySQLvsOraclevsSQLServer

数据库管理系统比较MySQLvsOraclevsSQLServer 数据库管理系统比较:MySQL vs Oracle vs SQL Server引言:数据库管理系统是现代信息技术领域中不可或缺的一环。
随着数据量的急剧增加和数据库应用的广泛应用,选择适合自己需求的数据库管理系统变得至关重要。
在本文中,我们将比较三种常见的数据库管理系统:MySQL、Oracle和SQL Server。
通过对比它们的性能、功能、可扩展性和使用成本,为读者提供一个更好地了解和选择的依据。
一、性能比较在数据库管理系统中,性能是一个至关重要的因素。
下面将对MySQL、Oracle和SQL Server的性能进行比较。
1.1 MySQL性能MySQL是一个轻量级的开源数据库管理系统,以其高性能而闻名。
它采用多线程处理机制和高效的索引算法,能够处理大规模的数据访问和高并发请求。
此外,MySQL还支持垂直和水平扩展,可根据实际需求进行灵活配置和调整。
因此,在对于大多数中小型应用来说,MySQL提供了相对较好的性能。
1.2 Oracle性能Oracle是一个功能强大且成熟的商业数据库管理系统。
它具有出色的性能,并且能够处理大规模的复杂数据模型。
Oracle采用了先进的事务处理机制和高效的查询优化算法,使其在处理高并发访问和复杂查询时具有出色的性能表现。
然而,Oracle的性能和功能也伴随着更高的硬件要求和许可成本。
1.3 SQL Server性能SQL Server是由微软公司开发的关系型数据库管理系统。
它在处理大规模数据时表现出色,并且支持高并发访问和复杂查询。
SQL Server 采用了先进的内存管理和缓存技术,以提高查询速度和响应时间。
此外,SQL Server还具有良好的稳定性和可靠性,适用于中小型企业的应用场景。
综合比较,MySQL适用于中小型应用,对性能要求较高且成本敏感的场景;Oracle适用于大规模企业级应用,对功能和可靠性要求较高的场景;SQL Server适用于中小型企业应用,对性能和稳定性要求较高的场景。
sql和oracle对数据库事务处理的差异性

SQL和Oracle 对数据库事务处理的差异性作者:Jake, 岀处:IT专家网论坛,责任编辑:陈子琪,2009-10-11 13:00背景在吉日嘎拉的软件编程走火入魔之:数据库事务处理入门(适合初学者阅读)文章中关于MS SQL Server 和Oracle对数据库事务处理的差异性引起一些争论,因此记录我对数据库事务处理的想法。
简介本文讲述 MS SQL Server 和Oracle对数据库事务处理的差异性,以及Oracle如何对事务处理的实现。
什么是事务数据库事务(Database Transaction)是一组数据库操作的处理单元。
事务符合ACID 的特性:Atomic :原子性,要么全部要么一无所有。
All or No ne.Con siste nt: —致性,所有依赖关系以及约束一致。
Isolated:分离性,不同事务不互相影响。
Durable:持久性,提交事务的数据需要持久化。
为什么要使用事务实现事务主要有两大功能:1•保证数据库的consistent(—致性状态),保持所有依赖关系以及约束一致)。
哪怕数据库管理系统出现故障时(例如断电),也能恢复到一致性状态。
例如一个银行转帐系统,张三给李四转3000 圆RMB,张三帐号上减 3000和李四帐号上加 3000需要同时完成,否则系统的帐就不平了。
也例如有些销售系统的汇总表和明细表,是一个主表和一个从表,需要同步更新。
2.并发时分离不同事务操作。
例如编辑过程中的数据不给其他事务查询到。
这也是相对的,在特效需求下可能要支持dirty read(脏读),但不是这里讨论的范围了。
SQL Server 2008 的事务类型1.自动提交事务 Autocommit Transactions这是SQL Server 默认的事务类型,每一条单独的SQL语句(SQL statement)都是单独的一个事务,语句执行完毕后自动提交。
调用方不需要手工控制事务流程。
Oracle和SQLServer的主要区别

序号 Oracle 1.Oracle的参数文件init.ora是可调的,既我们可以根据数据库的规 模调整Oracle对系统资源的使用情况,以达到最合理的资源分配,让 Oracle达到最佳的性能。因此Oracle的性能优势体现在它的多用户 上,比较适用于访问量和并发用户数大的大型应用系统上。 2.游标是以提高速度全部统一的单项游标,可以允许多用户异步读 取,而且声明比较简单,就一句declare cursor游标名 is select 语句就可以了。 数据库性能 3.Oracle以块为最小存储单位,以区为单位分配空间,用户可以根据 需要自己定义块的大小,且区可以按等额或递增进行分配,这可以大 大减少系统的I/O操作提高数据库的性能。 4.ORACLE中用户可以根据数据需要在创建块时定义填充因子(空闲空 间的百分比)和复用因子(当块的存储数据所占的空间下降到这个百分 比之下时,块才重新标记为可用)。用户可以根据记录变化频率和数 据量的大小设置合适的填充因子和空闲因子。 Oracle的安全可靠性更高: 1.Oracle的数据字典和真实数据是分开存放的,不同的数据分别放在 不同的表空间,而且基表(存储系统参数信息)是加密存储,任何人都 无法访问,只能通过用户可视视图查看。安全性高。 2.在ORACLE里默认只有三个系统用户,ORACLE只能通过注册用户登入 安全性 。 3.Oracle的控制文件记录了数据库文件的物理位置和有效性,在每次 打开Oracle系统都将自动对数据进行验证,查看其有效性,防止数据 的丢失,这体现了Oracle对数据管理的严密性。 4.ORACLE在创建表时用户可以精确定义数据存放的表空间,甚至可以 把一张表分开存放在多个表空间中,这样可以将数据量庞大的表按某 Oralce可以很好地支持Windows、Linux等多种操作系统,跨平台性比 跨平台 较好 Oracle的存储结构是由块、区、段组成,可扩展性好,空间利用率 高,但是操作比较复杂: 1.ORACLE里有两个块参数PCTFREE(填充因子)和PCTUSED(复用因子), 块的大小可设置,这样可降低数据行连接与行迁移的可能性。 2.连续的块组成区,区的分配可以是等额的也可以是自增长的,这样 存储结构的不同 可以减少空间分配次数。 3.Oracle的表可以分为多个段,段由多个区组成,每个段可指定分配 在哪个表空间里,这样大大降低了磁盘争用的可能性。 4.Oracle的数据字典和真实数据是分开存放的,不同的数据分别放在 不同的表空间,而且基表(存储系统参数信息)是加密存储,任何人都 无法访问。只能通过用户可视视图查看。 1.ORACLE中容错类型有三种,分别是预定义错误、非预定义错误、用 户自定义,其中在自定义错误中SQLCODE 错误号、SQLERRM错误描述 是SQL Server没有的。 容错机制 2.Oracle提供了健全的错误机制,用户可以轻松的获得错误位置和错 误原因而加以修改。用户还可以自己定义所须的错误类型,用以检查 逻辑错误。 备份机制 ORACLE提供了7种备份机制,具有联机备份功能 Oracle的日志默认有3个,先写入1号日志,满了后再写入2号日志,2 号满了再写入3号日志,3号满了后Oracle将自动备分1号日志的内 容,然后清空后写入新的日志信息,且Oracle的日志有多路复用功 能,我们可以为日志创建多个镜像,把相同的日志信息同时写入多个 日志文件中,这样可以防止磁盘损坏造成的数据丢失。
DM7与Oracle 11g和SQL Server 2008全面技术比较-019

DM7与Oracle 11g
和SQLServer 2008的比较
达梦数据库
DM7是达梦数据库技术有限公司推出的高性能数据库产品。
它具有开放的、可扩展的体系结构,易于使用的事务处理系统,以及低廉的维护成本。
DM7是自主开发的产品,具有完全自主版权和较高的安全级别。
DM7可以跨越多种软硬件平台,具有大型数据的综合管理能力,是高效稳定的国产数据库管理系统。
我们将达梦数据库管理系统DM7与国外两个主流商用数据库管
理系统——甲骨文公司的Oracle 11g和微软公司的SQLServer 2008,从功能、性能、标准符合性及主要技术指标等方面进行了比较。
比较的主要依据为国际上通用的各种数据库评测标准(如SQL 92标准、ODBC标准、JDBC标准、OLE DB标准、TPC-C和TPC-H性能评测标准等),同时结合应用实例进行测试、比较。
在测试、比较过程中,我们参照中国软件评测中心的《2005年度国产数据库管理系统测试方案》。
通过测试比较可以看出,DM7是国产具有自主版权的、高安全级别的、大型通用的数据库管理系统。
与Oracle 11g和SQLServer 2008这两个典型的国外数据库管理系统相比较,从功能上看,在联机事务处理方面功能基本相当,且DM7在安全性、中文全文检索和多媒体的支持上有突出的特点;从标准符合性上看,DM7表现最佳;
总体而言,DM7与Oracle 11g和SQLServer 2008基本处于同一水平线上,在功能与性能上各有千秋。
具体比较项目见下表所示:
DM7与Oracle 11g和SQLServer 2008的比较表。
SQL Server 和 Oracle 的优劣

SQL Server 和 Oracle 的优劣SQL Server是微软公司开发的数据库产品,SQL Server 2000被广泛使用,很多电子商务网站、企业内部信息化平台等都是基于SQL Server产品上。
SQL SERVER 2000是微软推出的数据库管理系统数据库日常维护工作是系统管理员的重要职责。
其内容主要包括以下几个部分:1、备份数据库2、备份事务日志3、备份数据库及其日志间的相互作用4、用户、权限管理等5、监视系统运行状况,及时处理系统错误6、灾难恢复与管理7、保证系统数据安全,周期更改用户口令SQL Server 2000 是Microsoft 公司2000年推出的SQL Server 数据库管理系统的版本。
它是一个杰出的数据库平台,可用于大型联机事务处理、数据仓库、以及电子商务等。
特点:真正的客户机/服务器体系结构。
图形化用户界面。
丰富的编程接口工具。
SQL Server与Windows NT完全集成。
具有很好的伸缩性。
对Web技术的支持。
SQL Server提供数据仓库功能。
是微软开发的只能按照在windows平台下。
适合小数据库应用。
oracle 可以安装在aix hp-unix solaris linux windows不同的架构的操作系统下。
大型数据库。
操作系统的稳定对数据库来说是十分紧要的,在数据库可操作平台上,Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。
客户可以利用很多种第三方应用程序、工具。
对开发商来说是很大的支持。
而SQL Server却只能在Windows上运行了,这个就显得比较单调了,但SQL Sever在Window 平台上的表现,和Windows操作系统的整体结合程度,使用方便性,和Microsoft开发平台的整合性都比Oracle强的很多。
但Windows操作系统的稳定性及可靠性大家是有目共睹的,再说Microsoft公司的策略目标是将客户都锁定到Windows平台的环境当中,只有随着Windows性能的改善,SQL Server才能进一步提高。
深度对比Oracle与SQL_Server

一般的公司通常会在他们的信息系统架构中引入多种数据库平台,同时引入三到四种不同的RDBMS解决方案的中大型公司也并不少见,当然这些公司里面的DBA们通常也需要同时拥有管理多种不同平台的技能了。
只在一种平台上展开工作的数据库专家们也通常会期待着在他们的下一份工作中能学到点不一样的东西,那些有勇气的人们则愿意花时间、金钱和精力去学习新的东西,也有其他因为换了新公司或者是为了找新的工作而去学习新的系统的人们,毋庸置疑的一点就是公司老板和人力专家们会更加青睐于那些拥有多个领域经验的求职者。
依我个人的经验来看,在学习一个新的数据平台的时候,最好的方法就是在新的环境中去发现那些你已知的东西,这样学习起来会简单很多。
当然,当中也会遇到一些全新的概念需要去学习,或者是忘掉一些你现在已知的概念,但不管怎么说你不是从零开始的。
比如说一个做SQL Server开发人员在要写Oracle存储过程的时候可能会先去找那些内置的函数然后比较它们之间不同点,她也可能会去比较变量声明以及错误处理的异同。
本系列文章中我将尝试对Microsoft SQL Server和Oracle RDBMS(以10g及以后的版本为主)进行一个深入的比较。
我会主要集中于这两种数据库之间架构上的比较,当然不要期望我会给你一个详尽的比较清单,但是我会尽我所能的让你看清这两种当今世上应用最广的数据库之间的相同和相异之处。
本文是以一个SQL Server DBA的角度去构思和写作的,不过相信这对Oracle专家门了解SQL Server这一面也是很有参考价值的。
废话少说,开工吧。
top操作系统的支持Microsoft SQL Server向来都从属于Windows大家族中的一员,要让Microsoft发布一个支持其它操作系统版本的可能性当然是小之又小的了。
当前来说SQL Server可以在XP、Vista、Windows Server 2000、2003、2008上运行,同时也有针对于32位和64位版本Windows 的数据库版本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle与SQL Server事务处理的比较收藏事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异。
事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的一个问题,对这个问题的疏忽可能会导致应用程序逻辑错误以及效率低下。
下面我们针对Oracle及SQL Server这两种当前广泛使用的大型数据库产品,探讨一下它们在事务处理方面的一些差异。
如没有特殊说明,本文内容适用的数据库产品版本为Oracle9i 及SQL Server 2000,其中的示例SQL语句,对于Oracle是在SQL*Plus中执行,而对于SQL Server 2000是在osql中执行。
1. 事务的概念事务可以看作是由对数据库的若干操作组成的一个单元,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求。
事务的一个典型例子是银行中的转帐操作,帐户A把一定数量的款项转到帐户B上,这个操作包括两个步骤,一个是从帐户A上把存款减去一定数量,二是在帐户B上把存款加上相同的数量。
这两个步骤显然要么都完成,要么都取消,否则银行就会受损失。
显然,这个转帐操作中的两个步骤就构成一个事务。
数据库中的事务还有如下ACID特征。
ACID分别是四个英文单词的首写字母,这四个英文单词是Atomicity、Consistency、Isolation、Durability,分别翻译为原子性、一致性、隔离性、持久性。
原子性:指事务中的操作,或者都完成,或者都取消。
一致性:指事务中的操作保证数据库中的数据不会出现逻辑上不一致的情况,一致性一般会隐含的包括在其他属性之中。
隔离性:指当前的事务与其他未完成的事务是隔离的。
在不同的隔离级别下,事务的读取操作,可以得到的结果是不同的。
持久性:指对事务发出COMMIT命令后,即使这时发生系统故障,事务的效果也被持久化了。
与此相反的是,当在事务执行过程中,系统发生故障,则事务的操作都被回滚,即数据库回到事务开始之前的状态。
对数据库中的数据修改都是在内存中完成的,这些修改的结果可能已经写到硬盘也可能没有写到硬盘,如果在操作过程中,发生断电或系统错误等故障,数据库可以保证未结束的事务对数据库的数据修改结果即使已经写入磁盘,在下次数据库启动后也会被全部撤销;而对于结束的事务,即使其修改的结果还未写入磁盘,在数据库下次启动后会通过事务日志中的记录进行“重做”,即把丢失的数据修改结果重新生成,并写入磁盘,从而保证结束事务对数据修改的永久化。
这样也保证了事务中的操作要么全部完成,要么全部撤销。
2. 事务设置及类型的区别在SQL Server中有三种事务类型,分别是:隐式事务、显式事务、自动提交事务,缺省为自动提交。
自动提交,是指对于用户发出的每条SQL语句,SQL Server都会自动开始一个事务,并且在执行后自动进行提交操作来完成这个事务,也可以说在这种事务模式下,一个SQL语句就是一个事务。
显式事务,是指在自动提交模式下以Begin Transaction开始一个事务,以Commit或Rollback结束一个事务,以Commit结束事务是把事务中的修改永久化,即使这时发生断电这样的故障。
例如下面是SQL Server中的一个显式事务的例子。
Begin TranUpdate emp Set ename=‟Smith‟ Where empno=7369Insert Into dept Values(60,‟HR‟,‟GZh‟)Commit隐式事务,是指在当前会话中用Set Implicit_Transactions On命令设置的事务类型,这时任何DML语句(Delete、Update、Insert)都会开始一个事务,而事务的结束也是用Commit 或Rollback。
在Oracle中没有SQL Server的这些事务类型,缺省情况下任何一个DML语句都会开始一个事务,直到用户发出Commit或Rollback操作,这个事务才会结束,这与SQL Server 的隐式事务模式相似。
3. 事务隔离级别在SQL92标准中,事务隔离级别分为四种,分别为:Read Uncommitted、Read Committed、Read Repeatable、Serializable,其中Read Uncommitted与Read Committed为语句级别的,而Read Repeatable与Serializable是针对事务级别的。
在Oracle和SQL Server中设置事务隔离级别的语句是相同的,都使用SQL92标准语法,即:Set Transaction Isolation Level Read Committed上面示例中的Read Committed可以被替换为其他三种隔离级别中的任意一种。
1) SQL Server中的隔离级别及实现机制在SQL Server中提供了所有这四种隔离级别。
下面我们讨论在SQL Server中,这几种隔离级别的含义及其实现方式。
Read Uncommitted:一个会话可以读取其他事务未提交的更新结果,如果这个事务最后以回滚结束,这时的读取结果就可能是错误的,所以多数的数据库应用都不会使用这种隔离级别。
Read Committed:这是SQL Server的缺省隔离级别,设置为这种隔离级别的事务只能读取其他事务已经提交的更新结果,否则,发生等待,但是其他会话可以修改这个事务中被读取的记录,而不必等待事务结束,显然,在这种隔离级别下,一个事务中的两个相同的读取操作,其结果可能不同。
Read Repeatable:在一个事务中,如果在两次相同条件的读取操作之间没有添加记录的操作,也没有其他更新操作导致在这个查询条件下记录数增多,则两次读取结果相同。
换句话说,就是在一个事务中第一次读取的记录保证不会在这个事务期间发生改变。
SQL Server是通过在整个事务期间给读取的记录加锁实现这种隔离级别的,这样,在这个事务结束前,其他会话不能修改事务中读取的记录,而只能等待事务结束,但是SQL Server不会阻碍其他会话向表中添加记录,也不阻碍其他会话修改其他记录。
Serializable:在一个事务中,读取操作的结果是在这个事务开始之前其他事务就已经提交的记录,SQL Server通过在整个事务期间给表加锁实现这种隔离级别。
在这种隔离级别下,对这个表的所有DML操作都是不允许的,即要等待事务结束,这样就保证了在一个事务中的两次读取操作的结果肯定是相同的。
2) Oracle中的隔离级别及实现机制在Oracle中,没有Read Uncommitted及Repeatable Read隔离级别,这样在Oracle 中不允许一个会话读取其他事务未提交的数据修改结果,从而避免了由于事务回滚发生的读取错误。
Oracle中的Read Committed和Serializable级别,其含义与SQL Server类似,但是实现方式却大不一样。
在Oracle中,存在所谓的回滚段(Oracle9i之前版本)或撤销段(Oracle9i版本),Oracle 在修改数据记录时,会把这些记录被修改之前的结果存入回滚段或撤销段中,就是因为这种机制,Oracle对于事务隔离级别的实现与SQL Server截然不同。
在Oracle中,读取操作不会阻碍更新操作,更新操作也不会阻碍读取操作,这样在Oracle中的各种隔离级别下,读取操作都不会等待更新事务结束,更新操作也不会因为另一个事务中的读取操作而发生等待,这也是Oracle事务处理的一个优势所在。
Oracle缺省的设置是Read Committed隔离级别(也称为语句级别的隔离),在这种隔离级别下,如果一个事务正在对某个表进行DML操作,而这时另外一个会话对这个表的记录进行读取操作,则Oracle会去读取回滚段或撤销段中存放的更新之前的记录,而不会象SQL Server 一样等待更新事务的结束。
在Serializable隔离级别(也称为事务级别的隔离),事务中的读取操作只能读取这个事务开始之前已经提交的数据结果。
如果在读取时,其他事务正在对记录进行修改,则Oracle就会在回滚段或撤销段中去寻找对应的原来未经更改的记录(而且是在读取操作所在的事务开始之前存放于回滚段或撤销段的记录),这时读取操作也不会因为相应记录被更新而等待。
4. DDL语句对事务的影响1) Oracle中DDL语句对事务的影响在Oracle中,执行DDL语句(如Create Table、Create View等)时,会在执行之前自动发出一个Commit命令,并在随后发出一个Commit或者Rollback命令,也就是说,DDL会象如下伪码一样执行:Commit;DDL_Statement;If (Error) thenRollback;ElseCommit;End if;我们通过分析下面例子来看Oracle中,DDL语句对事务的影响:Insert into some_table values(…Before‟);Creaate table T(x int);Insert into some_table values(…After‟);Rollback;由于在Oracle执行Create table语句之前进行了提交,而在Create table执行后也会自动发出Commit命令,所以只有插入After的行被回滚,而插入Before的行不会被回滚,Create table命令的结果也不会被回滚,即使Create table语句失败,所进行的Before插入也会被提交。
如果最后发出Commit命令,因为插入Before及Create table的操作结果已经在之前提交,所以Commit命令影响的只有插入After的操作。
2) SQL Server中DDL语句对事务的影响在SQL Server中,DDL语句对事务的影响与其他DML语句相同,也就是说,在DML语句发出之前或之后,都不会自动发出Commit命令。
在SQL Server 2000中,对于与上面Oracle同样的例子,最后发出Rollback后,数据库会回滚到插入Before之前的状态,即插入Before和After的行都会被回滚,数据表T也不会被创建。
如果最后发出Commit操作,则会把三个操作的结果全部提交。
5. 用户断开数据库连接对事务的影响另外,对应于Oracle的管理客户端工具SQL*Plus,在SQL Server 2000中是osql,两种管理工具都是命令行工具,使用方式及作用也类似,但是在SQL*Plus中,用户退出连接时,会自动先发出Commit命令,然后再退出,而在osql中,如果用户退出连接,会自动发出Rollback命令,这对于SQL Server的自动提交模式没有什么影响,但如果处于隐式事务模式,其影响是显而易见的。