当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·jb8的光标定位问题    »显示摘要«
    摘要: 该问题在: http://expert.csdn.net/expert/topic/1807/1807102.xml csdn还是有bug,新发的帖子看不到,只有采用这种方式,唉。 ......
 ·想学java,大家给点意见吧    »显示摘要«
    摘要: 想学java,我对java还不大了解,大家给点意见吧! ......


SQLSERVER不能,ORACLE能

为了活跃气氛,让我们向SQLSERVER版挑战吧!  
   
      请大家举出10个SQLSERVER不能,ORACLE能做的事.  
   
      我先抛砖引玉:  
   
  1.   开发性:   SQLSERVER不能,ORACLE能装在UNIX上  
  2.   分区表:   SQLSERVER不能,ORACLE能根据INDEX的值的范围,把数据存放到  
  不同的硬盘空间.  
  3.   AUTONOMOUS_TRANSACTION;SQLSERVER不能,ORACLE能在主TRANSACTION中独立  
  COMMIT或ROLLBACK子TRANSACTION而不影响主TRANSACTION.  
   
      请继续,高分伺候

NO.1   作者: OldMan0516

4.Oracle可以利用回滚表空间查询以前的信息,SQLServer不能  
  5.Oracle可以进行用户资源管理,SQLServer不能  
  6.Oracle支持Label   Security,SQLServer不能  
 

NO.2   作者: bzszp

支持一下,来帖一段  
   
  开放性:  
  SQL   Server          
          只能在windows   上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT   server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.                
   
  Oracle          
          能在所有主流平台上运行。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。  
   
   
  可伸缩性,并行性  
  SQL   server  
  DB2          
          并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。  
   
  Oracle  
          平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。  
          如果windowsNT不能满足需要,   用户可以把数据库移到UNIX中。  
   
  安全性  
  SQL   server                  
  没有获得任何安全证书。          
   
  Oracle   Server  
  获得最高认证级别的ISO标准认证。  
   
  性能  
  SQL   Server                      
  多用户时性能不佳      
       
  Oracle  
  性能最高,   保持windowsNT下的TPC-D和TPC-C的世界记录。  
   
  客户端支持及应用模式  
  SQL   Server                  
  C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.          
   
  Oracle  
  多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接      
       
   
  操作简便  
  SQL   Server                        
  操作简单,但只有图形界面.    
         
  Oracle  
  较复杂,   同时提供GUI和命令行,在windowsNT和unix下操作相同                
   
  使用风险  
  SQL   server                  
  完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容早期产品。使用需要冒一定风险。  
             
  Oracle  
  长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。    
 

NO.3   作者: DJMPH

Oracle可以建立位图索引,SQLServer不能。  
  Oracle可以建立函数索引,SQLServer不能。  
  SQLServer不支持前触发器,所有都是后触发器。  
   
  关于Oracle分区表,SQLServer   2000可以使用分区视图,原理也是一样,把不同物理空间的表联系在一起。  
  SQLServer能支持嵌套事务,事务上加上名字就好,就是说能在主事务中操作子事务。

NO.4   作者: bzszp

oracle:  
  length()   lengthb()  
  sqlserver:  
  datalength()

NO.5   作者: jiezhi

不了解sql   server

NO.6   作者: OldMan0516

似乎SQLServer只是表级触发器,不支持行级触发器

NO.7   作者: qxm

SQL好象也有命令行的。SQL也支持JDBC的。  
   
  ORACLE备份方式比较多,有STANDBY、RMAN、IMP等,SQL就比较简单了。  
  ORACLE可是实现多个日志文件的镜象,而SQL只有一个日志文件。  
  ORACLE有很少但很多数量的归档日志,而SQL只有一个日志文件,经常会增加到很大。  
  ORACLE的BLOCK   SIZE可以根据OLTP或者DSS不同的应用自己设置,而SQL只能为8K。  
  ORACLE的内存是在数据库启动时就由参数文件决定了的,而SQL可以根据应用自动改变。  
 

NO.8   作者: qxm

ORACLE有专门实现树形查询的语法,而SQL没有。

NO.9   作者: ccbzzp

ORACLE可以修改字符集  
  SQLSERVER不能,必須重新安裝  
 

NO.10   作者: ccbzzp

ORACLE可以安裝各种平台  
  SQLSERVER不行  
   
 

NO.11   作者: maohaisheng

ORACLE可以卖的很贵却还有人买  
  SQLSERVER不行  
 

NO.12   作者: BlueskyWide

也不太了解sqlserver。  
  它有Orcle中的分析函数和锁吗?  
   
 

NO.13   作者: leimin

TO:ccbzzp(ccbzzp)    
  ORACLE可以修改字符集  
  SQLSERVER不能,必須重新安裝  
   
   
  有问题,在SQL   SERVER6.5是不可以的,在SQLSERVER2000已经完全可以  
  EXAMPLE:ALTER   DATABSE   DB_NAME   COLLATE   CHINESE_PRC_CI_AS

NO.14   作者: leimin

TO:OldMan0516(凡人0516)  
  MSSQL   SERVER2000是完全可以行触发的!!!  
   
  如果大家有和问题可以到SQLSERVER板块去看看:-)

NO.15   作者: hrb_qiuyb

跟本不是一个量级上的东西,没什么可比性。  
  sql   server也没说要和oracle比呀,人家在windowns平台自我完善呢。

NO.16   作者: leimin

http://expert.csdn.net/Expert/topic/1810/1810360.xml?temp=.4442407

NO.17   作者: pengdali

ORACLE可以修改字符集  
  SQLSERVER不能,必須重新安裝更改排序规则。  
   
  -------------------------------------  
  alter   database   数据库   collate   排序规格  
   
   
  其中,某些排序规则指定CI   不区分大小写,CS   指定区分大小写。  
   
  如:alter   database   数据库   COLLATE   Chinese_PRC_CI_AS    
          不区分大小写,而  
          alter   database   数据库   COLLATE   Chinese_PRC_CS_AS    
          使之区分大小写。  
   
  使用如下命令,可以获得更多的规则:  
  SELECT   *  
  FROM   ::fn_helpcollations()  
 

NO.18   作者: pengdali

oracle可以有java过程sqlserver没有,而sqlserver可以用dll。  
  oracle9i有分析函数,sqlserver没有  
  oracle有rownum等伪列,sqlserver没有  
  sqlserver有full   join,oracle9i才有  
   
 

NO.19   作者: pengdali

to     DJMPH(冷开水)    
  不是吧,你不会sql?哈。自己去看触发器吧

NO.20   作者: jiezhi

up

NO.21   作者: seth99

to   bzszp(SongZip):  
  你关于SQL   Server的认识已经很outdata了,哈哈,看看这吧,关于c2,SQL   Server早就拿到了.http://www.microsoft.com/china/sql/evaluation/overview/2000/fastfacts.asp  
  虽然在大系统上还是喜欢用Oracle,毕竟用多了,习惯了,不过只会Oracle的也别小看SQL   Server,SQL   Server亦非昔日阿蒙,很多Oracel能做的,SQL   Server也能了,有些甚至做得更好,像Oracle的数据库碎片,实在是讨厌,不知道9i是不是好些了,反正9i以前的版本实在是臭不可闻,这方面SQL   Server就感觉好多了。  
  to   black_snail(●龙飞虎○)   ,关于嵌套事务:  
  ========================================================  
  begin   tran   t1  
  insert   into   table1(f1)   values(10)  
  save   tran   mark1  
  update   table1   set   f1=100000   where   f1=10  
  rollback   tran   mark1  
  insert   into   table1(f1)   values(100)  
  update   table1   set   f1=100000   where   f1=100  
  commit   tran   t1    
  ========================================================

NO.22   作者: seth99

update   table1   set   f1=100000   where   f1=10被rollback   :-)凑热闹

NO.23   作者: eduyu

暂时来说,不是一个级别的东西。毕竟对于Oracle,数据库命根子。  
  中期来说,不管性能,单单依照M$的小气,不大可能支持别的平台。所以,是并存。  
  长期来说,那就要看小丽(Linux)了,如果能够在桌面上断了M$的财路。本来就是半桶水的SQL   server就会和它的老祖宗Sybase一样,在数据库领域,逐渐退出我们的视野了。

NO.24   作者: leimin

楼上的,你看到MS最新的WINDOWS   SERVER   2003   FOR   64BIT,在加上SQL   SERVER2003   FOR   64BIT速度已经完全超过小型机+ORACLE的速度,成本还要低很多.  
   
  我最讨厌某些人似乎会ORACLE就是高级,懂MS就是低端的态度!!!  
   
  至于小丽(Linux)要断MS的财路,我看你又在做梦了.....zzzzzz  
  在桌面系统MS的地位很难动摇.

NO.25   作者: leimin

to:   bzszp(SongZip)    
  性能  
  SQL   Server                      
  多用户时性能不佳      
    --这应该和数据库的设计又很大的关系,不知你的比较的标准是什么?  
   
  Oracle  
  性能最高,   保持windowsNT下的TPC-D和TPC-C的世界记录。  
  --现在好向不是这样的,你可以到TPC的网站上去看看.

NO.26   作者: leimin

客户端支持及应用模式  
  SQL   Server                  
  C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.          
  --有免费的FOR   LINUX的client  
   
  Oracle  
  多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接      
  --MS也可以用JDBC连接      
   
  操作简便  
  SQL   Server                        
  操作简单,但只有图形界面.    
  --你一定是N年没有用过MSSQLSERVER,你是从那里抄袭的!        
   
  Oracle  
  较复杂,   同时提供GUI和命令行,在windowsNT和unix下操作相同  
  --MS也有很多BCP,ISQL,OSQL,DTSRUN,.....

NO.27   作者: bzszp

to   leimin(黄山光明顶):  
  上面的那些是我以前搜集的资料,可能早就落伍了  
  对sql   server不是很了解,  
  但中国移动通信的数据库用的是oracle的  
  我想oracle在这一方面还是有一定的优势的吧  
 

NO.28   作者: DJMPH

to   pengdali(大力)    
  可能我没有说清楚,我的意思是触发器分为前触发方式和后触发方式,而SQLServer只有在数据修改后的后触发方式:)

NO.29   作者: pengdali

oracle:  
  length()   lengthb()  
  sqlserver:  
  len()   datalength()

NO.30   作者: pengdali

to   DJMPH(冷开水)    
  CREATE   TRIGGER   名   on   表  
  INSTEAD   OF   INSERT  
  AS  
  BEGIN  
      INSERT   INTO   表2   SELECT   name1,name1   FROM   inserted  
  END

NO.31   作者: pengdali

你应该说sqlserver没有记录级触发器

NO.32   作者: qxm

希望大家只是讨论SQL和ORACLE本身的问题,而不要又争吵起来。  
  我经常用ORACLE和SQL,不过还是比较喜欢ORACLE。  
  ORACLE也提供了直接操作WORD、EXCEL、PPT和MAPI的脚本,所以不能说只有SQL才能操作。  
  SQL提供了从SQL到ORACLE的复制工具和双向的转换工具  
  ORACLE只提供了SQL到ORACLE的转换工具,要从ORACALE到SQL还需要额外的透明网关。  
  ORACLE的锁是事务级的,而SQL的锁是语句级的。  
  ORACLE的提示是做为注释加进SQL语句的,出错了可以忽略。SQL的提示是做为SQL的一部分加在SQL语句的最后,出错了就不执行了。

NO.33   作者: samuelpan

oracle版本越高,越易用,  
  MS版本越高,越复杂.

NO.34   作者: qxm

eduyu(杜宇)   :  
  你说SYBASE逐渐退出我们的视野了,也不知道凭什么根据。说话要谨慎啊。  
  我在以前兼职公司参与或见过的的项目中,山东、合肥、宁波等许多上市的百货公司、大卖场、超市等都是用的SYBASE,还有交通银行的系统,你去看看!

NO.35   作者: samuelpan

sybase+pb完美的结合。

NO.36   作者: xfkk

不好意思,我这个问题好象太少的人看,借地方,谢谢  
  http://expert.csdn.net/Expert/topic/1809/1809392.xml?temp=.1350824  
  希望大家帮我

NO.37   作者: xfkk

不好意思,我这个问题好象太少的人看,借地方,谢谢  
  http://expert.csdn.net/Expert/topic/1809/1809392.xml?temp=.1917078  
  希望大家帮我

NO.38   作者: maohaisheng

to   leimin(黄山光明顶):  
   
  --------------------------------------------------------------------------------  
  楼上的,你看到MS最新的WINDOWS   SERVER   2003   FOR   64BIT,在加上SQL   SERVER2003   FOR   64BIT速度已经完全超过小型机+ORACLE的速度,成本还要低很多.  
  --------------------------------------------------------------------------------  
  WINDOWS   SERVER   2003   FOR   64BIT+SQL   SERVER2003   FOR   64BIT要是微软这点都达不到,它就不是为软了  
   
  企业级数据库,速度虽然很重要,成本也很重要。  
  但是我个人觉得和稳定性,可用性才是最重要的,实际的应用情况也是如此,也许我孤陋寡闻,我就没见过7x24的系统的是用Sql   Server(也许不是Sql   Server的错误)  
   
  --------------------------------------------------------------------------------  
  我最讨厌某些人似乎会ORACLE就是高级,懂MS就是低端的态度!!!  
  --------------------------------------------------------------------------------  
  想想我招聘的遭遇,你的这条论点我举双脚赞成。开发工具面对的应用不同,低级/高级说是“臭狗屎”。  
   
  --------------------------------------------------------------------------------  
  至于小丽(Linux)要断MS的财路,我看你又在做梦了.....zzzzzz  
  在桌面系统MS的地位很难动摇.  
  --------------------------------------------------------------------------------  
  桌面系统MS的地位很难动摇,这跟数据服务器有什么关系?  
  我用过linux下的oracle,性能出色,稳定性很强。如果企业有足够的资金,我会强烈建议它使用linux下的oracle。  
   
   
  oracle的最大缺点就是太贵了,实在太贵了。  
 

NO.39   作者: enhydraboy

ORACLE支持基于数据对象的INSERT,UPDATE,DELETE的触发器外,还支持系统级的触发器。如logon,instance   startup等。还有oracle有行触发的概念,而这是SQLServer没有的。

NO.40   作者: hater

SQL   SERVER   2000开始支持前和后级触发器了。

NO.41   作者: enhydraboy

但是SQL   server从来就没有行触发的概念,因为sybase已经定好了。它必须通过inserted和deleted表来获得。显然,如果你要编写一个考虑周全的触发器,就要注意有。但是sql   server绝对没有系统触发器的概念。

NO.42   作者: enhydraboy

1   ORACLE在配置上支持MTS的结构,就是可以有数据库连接池的概念。而sql   server就没有。  
  2   ORACLE的网络配置,用同一个LISTENER来集中管理连接的请求,还可以做到多个LISTENER的FAILOVER配置。  
  3   ORACLE中有同义词的概念,我觉得非常方便,而sql   server怎么办呢,sql   server逻辑上是iinstance/database/table的概念。如果,我只能用[database].[user].[table]来访问表。  
  4   oracle可以对实例运行的不同配置,修改内存的分配策略。sql   server的设置项简单地就不用设了。  
  5   oracle可以支持每个表的存储参数,让你调整每个表的存储空间的增长。sql   server没有,也许microsoft认为没有必要。  
 

NO.43   作者: SW_Badboy

哎呀,怎么我在win2000里用IIS+ASP,数据库用Orcalce怎么都慢过MS SQL Server   2000  
  怎么会这样啊!!!!!!

NO.44   作者: jiezhi

如果你使用针对oracle优化的data   provider的话就不同了。  
  那些微软的东西针对sql   server做了特别的优化了。

NO.45   作者: enhydraboy

你用Weblogic+Oracle看看,不知道要比iis+asp+sqlserver的系统稳定多少倍,面向internet的应用,关键是可用性,稳定性。对于大并发量的访问,iis的体系根本就不行。  
  还有iis的话,用oracle的ole   object   for   visual   basic,可以比ado快,应为直接同sql*net通讯,用oledb   provider的多了一层(ado->data   provider->sql*net),你说能不慢么。  
 

NO.46   作者: enhydraboy

再说说SQL   Server有的,oracle没有的  
  1   SQL   Server有Link   Server的概念,而且可以是异种库,oracle尽管有database   link的概念,但是必须是oracle,这一点还是Microsoft考虑的周全。  
  2   SQL   Server的DTS包在实际应用中,相当的有用;oracle没有。  
  3   SQL   Server   2000用索引视图来对抗oracle的partition的概念,还算过的过去。  
  4   SQL   Server到了2000才支持多实例,算是可以和oracle在的多实例一样吧。  
  5   SQL   Server有扩展存储过程可以调用AcitveX空件,Oracle   8i开始可以调用Java类,大家算打个平手吧。  
  6   SQL   Server的日志文件并不重要,因为只要mdf在,只要sp_attach_single_file_db,可以重建日志文件,oracle要是丢了online   redolog,那可就麻烦了,慢慢地恢复吧。  
  7   SQL   Server可以支持级联的触发器,而且可以修改触发的自身表,oracle就瞪着报错吧。  
  8   在oracle中可以写1局非常复杂SQL语句(符合标准SQL),在SQL   Server中,会报"结构过于复杂",Microsoft还真能找个台阶下。看来SQL   Server的SQL   Parser器还要好好整修一下。  
   
  就我个人的经验,自从好好地把oracle的一套student   book看了一遍,就是觉得SQL   Server比起oracle,从体系上就差了一大截。可能Sybase当时就是为了减化oracle复杂性,能够更好地取悦最终用户才出了SQL   server,microsoft当然也不会去改变这一点,只是在面向最终用户的管理方面下了大功夫。  
  反正,对于最终用户来说,越是能够方便的产品,越是能吸引自己。  
   
  再说说,SQL   Server的价格和Oracle的价格。  
  1   SQL   Server是便宜,因为它更本不值那么高的价格。  
  2   SQL   Server的许可是按服务许可+客户端许可和cpu许可两种的概念来算,你的客户端数目上去了,对不起,掏钱。当你觉得不合算,怎么办,改成cpu(Unlimited)吧,Microsoft会退钱么?而且,别忘了,SQL   server是装在NT/2000   Server上的,你SQL   Server按CPU买,你的Win2K得按Unlimited买,你就傻眼吧。  
  3   Oracle的计算很简单,把你的服务器CPU(Interl芯片还是RISC芯片)赫兹数和个数报出来,套个公式一算,就可以知道要买多少个license数。而且,你可以和oracle谈价钱的,以前我参与的一个项目,就最终和oracle谈好了买500个并发license数。就好了。Microsoft会和你谈么。别天真地认为Microsoft便宜,因为中国很多的企业都是在盗版,还有,就Microsoft查的最厉害,给他差到,飞让你给个几十万才了,那是你就傻眼吧。  
  4   Oracle   有Linux的,找个公司会做维护的谈个价铬,不知道比SQL   server便宜多少。Microsoft有么,它最反对Open   Source。  
   
  如果大家做过方案规划,才知道其中的猫腻,别以为Microsoft的便宜,如果你的应用大的话,价格最低oracle的2/3,而且还得考虑以后再付钱。如果你的应用小,为什么不用Interbase(比SQL   Server不知道要便宜多少)呢。  
 

NO.47   作者: PEPSIFOREVER

哇,高手,佩服佩服  
  学习ING

NO.48   作者: ropriest

先用VB+SQL   Server,后来用PB+Oracle,现在用PB+Sybase,  
   
  还是Sybase+PB好————阿!  
   
  学习!

NO.49   作者: hnews

oracle支持java的存储编程,oracle数据库的管理分得很细,sqlserver只有一个sa,不安全!!

NO.50   作者: maohaisheng

-------------------------------------------------------  
  决定重谢enhydraboy(乱舞的浮尘)    
  推他当版主如何?  
  -------------------------------------------------------  
   
  支持

NO.51   作者: Net8

ORACLE在SQL语言中支持树型结构表的查询遍历,M$SQL不能。

NO.52   作者: enhydraboy

-------------------------------------------------------  
  决定重谢enhydraboy(乱舞的浮尘)    
  推他当版主如何?  
  -------------------------------------------------------  
  谢谢,两位大哥的抬举。小弟在oracle上还需多多学习,争取早日能有一个星,到时到好真想为大家服务服务。

NO.53   作者: Yang_

也来这里学习!  
 

NO.54   作者: jiezhi

enhydraboy(乱舞的浮尘)的确是高手啊,见多识广而且了解的很深入!  
  从来就应证了一句话:在实际的大型企业应用中sql   server实在是无法和oracle相比。

NO.55   作者: jiezhi

enhydraboy(乱舞的浮尘)以后要常来这里啊!  
   
  我想知道,in   ms   sql可以随机(一定条数记录范围内)选取一条记录吗?  
  在oracle可以做到,如下面的语句:  
  select   a.*   from     (select   rownum   rn,a.*   from   t_jg   a)a   where   rn=(select   round(dbms_random.value(1,17))   rn   from   dual);  
 

NO.56   作者: jiezhi

而我使用下面这句又可以随机选出记录  
    select   a.*   from     (select   rownum   rn,a.*   from   t_jg   a)a   where   rn=round(dbms_random.value(1,17));

NO.57   作者: icevi

jiezhi(西域浪子):  
  MSSQL中随机选记录:  
  select   top   17   *   from   mytable   order   by   newid()  
   
  是不是很简单?:)

NO.58   作者: jiezhi

的确很简单,呵呵,不错。  
 

NO.59   作者: seth99

to     black_snail(●龙飞虎○),把10,12,13   ROLLBACK掉  
  =======================================  
  create   table   test   (   a   int)  
   
  begin   tran   t1  
  save   tran   mark1  
    insert   into   test   values(10)  
  rollback   tran   mark1    
        insert   into   test   values(11)  
  save   tran   mark2  
  insert   into   test   values(12)  
  insert   into   test   values(13)  
  rollback   tran   mark2  
  commit   tran   t1  
  ========================================  
  另外,  
  ====================================  
  --->  
  1   insert   into   a  
  2   --->   insert   into   b   ;   commit;  
  3   insert   into   c  
  4   --->   insert   into   d   ;   commit;  
  5   rollback   ;   (   1,3被rollback   only)  
  =====================================  
  5应该是commit吧,不然主事务都rollback,子事务也应该rollback,不应该会b,d能够insert,没在oracle上试,如有错误请见谅和指出   :-)  
  在事务处理上,Oracle和Ms   SQL   Server虽然实现的方式不同,但都还是处理的中规中矩的,应该不会有什么太大差异,不过Oracle的语法上看起来好像舒服些,其实实际应用中Ms   SQL   Server也可以用例如stored   procedure,function之类的技巧让code看起来舒服很多。

NO.60   作者: enhydraboy

SQL   Server的确不能很好地解决这个问题。  
  如果采用嵌套事务的做法,主事务的commit和rollback都会自动将所有子事务进行commit和rollback,而采用存储点,只能rollback到一个存储点,不能commit到一个存储点。的确,不好办。


    摘要: private string getusercount(string username) { string myconn="provider=microsoft.jet.oledb.4.0;data source=" + server.mappath(".") + "..\\db\\mydb.mdb"; oledbco......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE