在 SQL Server和 Oracle 之间迁移存在一个要命的问题:它们分别说着 SQL-PL/SQL (Oracle)和Transact-SQL (微软)这两种不同的SQL方言。
在大多数情况下,假如你能使用其中一种SQL语言就多半能使用其它的SQL语言。考虑到SQL的函数、操作符、语句等等因素我特意搞了一份SQL程序员参考,这份资料表明了各种DBMS所支持的特性。当然,假如 SQL 产品的这些美国供给商们都老老实实遵守美国标准SQL(ANSI-SQL)哪里还会产生这样大的问题!
此外你你还可能会遭遇以下的问题:
Oracle 的dual表——在 SQL Server上你可能会碰到select ‘x’;这样的语句。而在 Oracle上这条语句就必须被转换成select ‘x’ from dual; 。dual是一种由Oracle生成的系统表。除了这个 SQL 语法问题之外,你还不能把这个表拷贝到你的 SQL Server上,因为它是一个 Oracle 系统表。
Truncation -- 两种DBMS 都支持FLOOR和ROUND函数,但是 Oracle 还多了个 TRUNC 函数。假如你的 Oracle 系统用到了TRUNC 函数,那么牵扯之处就需要你重新编辑了——可能得想法换成FLOOE或ROUND函数。
Concatenation-SQL Server 7 不支持 ANSI || 连接方法,但是 SQL Server 2000却可以支持了。现在两种数据库都都采用加号( )表示连接,但最好还是把这个符号用在算术运算上吧!
就看你到底用的是两种服务器的具体版本了,有关 SQL 语言的迁移问题几乎总是会忽然在没有预料到的情况下冒出来。
放弃Oracle 的业务案例
这种数据库的迁移并不是简单的感情游戏,选择微软产品而非 Oracle 是受到业务案例支持的。Oracle 在法庭和宣传战中为了打败微软投入了相当多的资源。然而,从经济性的角度来看,Oracle并不具更高的性价比。此外,Oracle 只有一种核心产品,相比微软还是底气不足。复杂的销售过程之外,你最好得找个更牛气点的公司提供支持。这个公司应该健康向上,产品受到普遍欢迎,在遭遇更强大的对手之前得保证这家公司至少在数年之内非常强大。
迁移到 SQL Server又能获得什么呢?
首先,你获得的系统同你的网络体系结构保持了高度的一致性。你无需专人负责 UNIX 系统的治理。为 DBMS 量身打造的治理工具能以最佳状态同那些网络操作系统工具协同工作。
其次,系统实现了对 .NET 应用程序的内在支持。.NET体系结构并不要求你一定要使用 SQL Server,但这种服务器是缺省的数据库。用于Oracle 的 ODBC 驱动程序当然也不错,但它们总是一个可能的故障点。
第三,在.NET网络下采用Oracle的成本比采用SQL Server更高。当你购买更多的Win2K 服务器许可证以及VS.NET和Office许可证时,你可能会得到折扣。
最后,就算你单独购买了 SQL Server系统也可能比Oracle来得便宜。最近购买Oracle 许可证在讨价还价的时候还难得像拔牙似的。我记得曾问过一个销售代表价格,他竟然说:“你买得起吗?”
小结
假如你正在营造.NET网络,采用SQL Server作为你的DBMS是理智的,原因在于它正是微软 .NET Server应用套件的核心组成部分。从平台之间的迁移是一个必须仔细考虑、周密部署的重要过程。在转换平台之前你更应该拥有一个统一、有效、易于治理和可靠的.NET基础。
评论加载中…
![]() |