为了活跃气氛,让我们向SQLSERVER版挑战吧!
请大家举出10个SQLSERVER不能,ORACLE能做的事.
我先抛砖引玉:
1. 开发性: SQLSERVER不能,ORACLE能装在UNIX上
2. 分区表: SQLSERVER不能,ORACLE能根据INDEX的值的范围,把数据存放到
不同的硬盘空间.
3. AUTONOMOUS_TRANSACTION;SQLSERVER不能,ORACLE能在主TRANSACTION中独立
COMMIT或ROLLBACK子TRANSACTION而不影响主TRANSACTION.
请继续,高分伺候
4.Oracle可以利用回滚表空间查询以前的信息,SQLServer不能
5.Oracle可以进行用户资源管理,SQLServer不能
6.Oracle支持Label Security,SQLServer不能
支持一下,来帖一段
开放性:
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
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。
Oracle可以建立位图索引,SQLServer不能。
Oracle可以建立函数索引,SQLServer不能。
SQLServer不支持前触发器,所有都是后触发器。
关于Oracle分区表,SQLServer 2000可以使用分区视图,原理也是一样,把不同物理空间的表联系在一起。
SQLServer能支持嵌套事务,事务上加上名字就好,就是说能在主事务中操作子事务。
oracle:
length() lengthb()
sqlserver:
datalength()
不了解sql server
似乎SQLServer只是表级触发器,不支持行级触发器
SQL好象也有命令行的。SQL也支持JDBC的。
ORACLE备份方式比较多,有STANDBY、RMAN、IMP等,SQL就比较简单了。
ORACLE可是实现多个日志文件的镜象,而SQL只有一个日志文件。
ORACLE有很少但很多数量的归档日志,而SQL只有一个日志文件,经常会增加到很大。
ORACLE的BLOCK SIZE可以根据OLTP或者DSS不同的应用自己设置,而SQL只能为8K。
ORACLE的内存是在数据库启动时就由参数文件决定了的,而SQL可以根据应用自动改变。
ORACLE有专门实现树形查询的语法,而SQL没有。
ORACLE可以修改字符集
SQLSERVER不能,必須重新安裝
ORACLE可以安裝各种平台
SQLSERVER不行
ORACLE可以卖的很贵却还有人买
SQLSERVER不行
也不太了解sqlserver。
它有Orcle中的分析函数和锁吗?
TO:ccbzzp(ccbzzp)
ORACLE可以修改字符集
SQLSERVER不能,必須重新安裝
有问题,在SQL SERVER6.5是不可以的,在SQLSERVER2000已经完全可以
EXAMPLE:ALTER DATABSE DB_NAME COLLATE CHINESE_PRC_CI_AS
TO:OldMan0516(凡人0516)
MSSQL SERVER2000是完全可以行触发的!!!
如果大家有和问题可以到SQLSERVER板块去看看:-)
跟本不是一个量级上的东西,没什么可比性。
sql server也没说要和oracle比呀,人家在windowns平台自我完善呢。
http://expert.csdn.net/Expert/topic/1810/1810360.xml?temp=.4442407
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()
oracle可以有java过程sqlserver没有,而sqlserver可以用dll。
oracle9i有分析函数,sqlserver没有
oracle有rownum等伪列,sqlserver没有
sqlserver有full join,oracle9i才有
to DJMPH(冷开水)
不是吧,你不会sql?哈。自己去看触发器吧
up
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
========================================================
update table1 set f1=100000 where f1=10被rollback :-)凑热闹
暂时来说,不是一个级别的东西。毕竟对于Oracle,数据库命根子。
中期来说,不管性能,单单依照M$的小气,不大可能支持别的平台。所以,是并存。
长期来说,那就要看小丽(Linux)了,如果能够在桌面上断了M$的财路。本来就是半桶水的SQL server就会和它的老祖宗Sybase一样,在数据库领域,逐渐退出我们的视野了。
楼上的,你看到MS最新的WINDOWS SERVER 2003 FOR 64BIT,在加上SQL SERVER2003 FOR 64BIT速度已经完全超过小型机+ORACLE的速度,成本还要低很多.
我最讨厌某些人似乎会ORACLE就是高级,懂MS就是低端的态度!!!
至于小丽(Linux)要断MS的财路,我看你又在做梦了.....zzzzzz
在桌面系统MS的地位很难动摇.
to: bzszp(SongZip)
性能
SQL Server
多用户时性能不佳
--这应该和数据库的设计又很大的关系,不知你的比较的标准是什么?
Oracle
性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。
--现在好向不是这样的,你可以到TPC的网站上去看看.
客户端支持及应用模式
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,.....
to leimin(黄山光明顶):
上面的那些是我以前搜集的资料,可能早就落伍了
对sql server不是很了解,
但中国移动通信的数据库用的是oracle的
我想oracle在这一方面还是有一定的优势的吧
to pengdali(大力)
可能我没有说清楚,我的意思是触发器分为前触发方式和后触发方式,而SQLServer只有在数据修改后的后触发方式:)
oracle:
length() lengthb()
sqlserver:
len() datalength()
to DJMPH(冷开水)
CREATE TRIGGER 名 on 表
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO 表2 SELECT name1,name1 FROM inserted
END
你应该说sqlserver没有记录级触发器
希望大家只是讨论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语句的最后,出错了就不执行了。
oracle版本越高,越易用,
MS版本越高,越复杂.
eduyu(杜宇) :
你说SYBASE逐渐退出我们的视野了,也不知道凭什么根据。说话要谨慎啊。
我在以前兼职公司参与或见过的的项目中,山东、合肥、宁波等许多上市的百货公司、大卖场、超市等都是用的SYBASE,还有交通银行的系统,你去看看!
sybase+pb完美的结合。
不好意思,我这个问题好象太少的人看,借地方,谢谢
http://expert.csdn.net/Expert/topic/1809/1809392.xml?temp=.1350824
希望大家帮我
不好意思,我这个问题好象太少的人看,借地方,谢谢
http://expert.csdn.net/Expert/topic/1809/1809392.xml?temp=.1917078
希望大家帮我
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的最大缺点就是太贵了,实在太贵了。
ORACLE支持基于数据对象的INSERT,UPDATE,DELETE的触发器外,还支持系统级的触发器。如logon,instance startup等。还有oracle有行触发的概念,而这是SQLServer没有的。
SQL SERVER 2000开始支持前和后级触发器了。
但是SQL server从来就没有行触发的概念,因为sybase已经定好了。它必须通过inserted和deleted表来获得。显然,如果你要编写一个考虑周全的触发器,就要注意有。但是sql server绝对没有系统触发器的概念。
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认为没有必要。
哎呀,怎么我在win2000里用IIS+ASP,数据库用Orcalce怎么都慢过MS SQL Server 2000
怎么会这样啊!!!!!!
如果你使用针对oracle优化的data provider的话就不同了。
那些微软的东西针对sql server做了特别的优化了。
你用Weblogic+Oracle看看,不知道要比iis+asp+sqlserver的系统稳定多少倍,面向internet的应用,关键是可用性,稳定性。对于大并发量的访问,iis的体系根本就不行。
还有iis的话,用oracle的ole object for visual basic,可以比ado快,应为直接同sql*net通讯,用oledb provider的多了一层(ado->data provider->sql*net),你说能不慢么。
再说说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不知道要便宜多少)呢。
哇,高手,佩服佩服
学习ING
先用VB+SQL Server,后来用PB+Oracle,现在用PB+Sybase,
还是Sybase+PB好————阿!
学习!
oracle支持java的存储编程,oracle数据库的管理分得很细,sqlserver只有一个sa,不安全!!
-------------------------------------------------------
决定重谢enhydraboy(乱舞的浮尘)
推他当版主如何?
-------------------------------------------------------
支持
ORACLE在SQL语言中支持树型结构表的查询遍历,M$SQL不能。
-------------------------------------------------------
决定重谢enhydraboy(乱舞的浮尘)
推他当版主如何?
-------------------------------------------------------
谢谢,两位大哥的抬举。小弟在oracle上还需多多学习,争取早日能有一个星,到时到好真想为大家服务服务。
也来这里学习!
enhydraboy(乱舞的浮尘)的确是高手啊,见多识广而且了解的很深入!
从来就应证了一句话:在实际的大型企业应用中sql server实在是无法和oracle相比。
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);
而我使用下面这句又可以随机选出记录
select a.* from (select rownum rn,a.* from t_jg a)a where rn=round(dbms_random.value(1,17));
jiezhi(西域浪子):
MSSQL中随机选记录:
select top 17 * from mytable order by newid()
是不是很简单?:)
的确很简单,呵呵,不错。
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看起来舒服很多。
SQL Server的确不能很好地解决这个问题。
如果采用嵌套事务的做法,主事务的commit和rollback都会自动将所有子事务进行commit和rollback,而采用存储点,只能rollback到一个存储点,不能commit到一个存储点。的确,不好办。