把Oracle数据库移植到Microsoft SQL Server 7.0
日期:2008年5月21日 作者:-
因为两者的锁定和孤立策略如此不同,所以很难在Oracle和SQL Server之间直接映射锁定选择。要更好的理解这一过程,重要的一点是理解SQL Server提供的修改缺省锁定行为的选择。
在SQL Server中,修改缺省锁定行为最常用的机制是SET TRANSACTION ISOLATION LEVEL语句和在SELECT和UPDATE语句中支持的锁定暗示。SET TRANSACTION ISOLATION LEVEL语句为一个用户会话的持续时间设定事务孤立级别。除非在一个SQL语句的FROM子句中标明了表级别的锁定暗示,否则这将变成该会话的缺省行为。事务孤立是这样设定的:
SET TRANSACTION ISOLATION LEVEL
{
READ COMMITTED
READ UNCOMMITTED
REPEATABLE READ
SERIALIZABLE
}
READ COMMITTED
缺省的SQL Server孤立级别。如果你使用这种选择,你的应用程序将不能读取其他事务还没有提交的数据。在这种模式下,一旦数据从页上读出,仍然要释放共享锁定。如果应用程序在同一个事务中重新读取同一个的数据区,将会看到别的用户做的修改。
SERIALIZABLE
如果设定了这种选择,事务将同其他事务孤立起来。如果你不希望在查询中看到其他用户做的修改,你可以设置事务的孤立级别为SERIALIZABLE。SQL Server将占据所有的共享锁定,直到事务结束。你可以通过在SELECT语句中表名的后面使用HOLDLOCK暗示来在一个更小的级别上取得同样的效果。
READ UNCOMMITTED
如果设定为这种选择,SQL Server读者将不会受到阻塞,就像在Oracle中一样。该选择实现了污损读取或者说是孤立级别为0的锁定,这意味着不使用任何共享锁定并且也不使用任何独占的锁定。当这个选项选定后,有可能会读到未提交的或者污损的数据;在事务结束以前,数据可能会改变,数据集中的行可能出现也可能消失。这个选项同一个事务中在所有SELECT语句中设定所有的表为NOLOCK的效果是一样的。
这是四种孤立级别中限制性最小的一种。只有在你已经彻底的搞清楚了它将对你的应用程序结果的精确度有什么样的影响的前提下才能使用这种选择。
SQL Server有两种方法实现Oracle中的READ ONLY功能: 如果一个应用程序中的事务需要可重复读取的行为,你也许需要使用SQL Server提供的SERIALIZABLE孤立级别。 如果所有的数据库访问都是只读的,你可以设置SQL Server数据库选项为READ ONLY来提高性能。
SELECT…FOR UPDATE
当一个应用程序利用WHERE CURRENT OF 语法来在一个游标上实现定位更新或者删除时,首先使用Oracle中的SELECT…FOR UPDATE语句。在这种情况下,可以随意去掉FOR UPDATE子句,因为Microsoft SQL Server游标的缺省行为是“可更新的”。
缺省情况下,SQL Server游标在提取行下不占据锁定。SQL Server使用一种乐观的并行策略(optimistic concurrency strategy)来防止更新时相互之间的覆盖。如果一个用户试图更新或者删除一个读入游标后已经被修改过的行,SQL Server将给出一个错误消息。应用程序可以捕获该消息,并且重新进行适当的更新或者删除。要改变这个行为,开发人员可以在游标声明中使用SCROLL_LOCKS。
通常情况下,乐观的并行策略支持较高的并行性,所谓通常情况是指更新器之间冲突很少的情况。如果你的应用程序确实需要保证一行在被提取以后不会被修改,你可以在SELECT语句中使用UPDLOCK暗示。这个暗示不会阻碍别的读者,但是它禁止其他潜在的写入者也获得该数据的更新锁定。使用ODBC时,你可以通过使用SQLSETSTMTOPTION (…,SQL_CONCURRENCY)= SQL_CONCUR_LOCK来达到同样的目的。但是,其他的任何选择都将减少并行性。 - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] 下一页
-
- 把Oracle数据库移植到Microsoft SQL Server 7.0 相关文章:
- ·移动硬盘不显示盘符
- ·U盘启动电脑,USB移动硬盘启动电脑,USB外置光驱启动电脑
- ·鼠标自动移动/点击
- ·把Oracle数据库移植到Microsoft SQL Server 7.0
- ·用移动硬盘来安装Vista系统
- ·tomcat向weblogic移植的中文乱码问题
- ·Flash制作文字随鼠标移动动画效果
- ·图片向左移动的代码
- ·反病毒知识:如何让你的移动硬盘在DOS下杀毒
- ·GSM数字移动通信系统
- 把Oracle数据库移植到Microsoft SQL Server 7.0 相关软件
- ·跑跑卡丁车 高手李光漂移教学视频合集
- ·《战斧》街机移植简装版
- ·IBM USB 2.0 移动硬盘驱动程序 第二版 V1.30.004
- ·哈尔的移动城堡 OST
- ·《中国麻将1.0》街机移植中文版
- ·美女陪你摸麻将 街机移植版
- ·移软网络加速器 V3.0
- ·中国移动伴侣 V10.0.20070501(Beta)
- ·移动字典II V2.00
- ·极品飞车7高手漂移录像
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:oracle里的常用命令
精品推荐
热点TOP10
- ·Oracle触发器详细介绍
- ·VMware下RedHat安装Oracle 9i RAC全攻略
- ·oracle中pro*c的学习
- ·Pro*C的使用
- ·Oracle的SQL*PLUS命令的使用大全
- ·详细介绍ORACLE sqlplus命令
- ·ORA-12154: TNS: 无法解析指定的连接标识符
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·oracle数据库 exp/imp命令详解
- ·ORACLE傻瓜手册长篇连载
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·Oracle中分区表的使用
- ·oracle双机热备份方法
- ·Oracle数据库检查死锁的sql
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·如何在oracle中导入dmp数据库文件
- ·在PL/SQL 开发中调试存储过程和函数的一般性方法
- ·把Oracle数据库移植到Microsoft SQL Server 7.0
- ·Oracle主要的配置文件解释
特别推荐
- ·Oracle数据库处理时间的几个小技巧
- ·Oracle数据库中TNS常见问题处理方案
- ·入侵Oracle数据库常用操作命令
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·Oracle SQL精妙SQL语句讲解
- ·Oracle环境下APACHE虚拟服务器如何设置
- ·常见Oracle HINT的用法
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·oracle的update问题
- ·小议索引的使用
- ·oracle产品服务和技术级别介绍,OrACLE服务
- ·Oracle 数据类型
- ·Oracle数据库检查死锁的sql
- ·怎样将冷备份移植到另一台Solaris机器上
- ·Oracle 动态SQL返回单条结果和结果集
- ·手动建立 Oracle9i 数据库
- ·Oracle内存结构(二)----Shared Pool的详细信息
- ·DELPHI 调用 Oracle 存储过程并返回数据集的例子.
- ·关于block中行数据的存储与空间重组三
- ·Sybase及SQL Anywhere SQL语句小结
