数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

.NET框架下从Oracle到SQL Server的迁移


发布日期:2023年06月28日
 
.NET框架下从Oracle到SQL Server的迁移

如果你正在营造微软 NET 网络而后端运行着 Oracle 数据库那么你应该把后端迁移到 SQL Server这一问题的核心不在于比较数据库的性能而是寻求最适合你的工具NET 体系结构下要回答这两个问题答案只有一个那就是 NET Server在这篇文章里我们首先探究下为什么你的网络中存在 Oracle 服务器然后讨论如何将其迁移到 SQL Server最后阐述由这一举措所能获得的利弊

系统中的Oracle

如果在你的网络中存在 Oracle 服务器你需要搞清楚为什么需要它的理由 – 谁在使用它什么应用程序要用到它在它上面正运行着什么应用程序等等

谁在使用它?

首先你应该搞清楚谁在使用Oracle服务器否则还没有得出答案就匆匆搬走服务器很可能会促成大错当然真要这么做倒也是一种很快就能找出数据库用户的方法但我们还是劝你万万不可

网络管理员可能有监视或记录Oracle使用情况的执行过程开发人员可能要采用当前的服务器开发应用程序经理们可能要根据数据库保存的数据得出分析报告或利用 Oracle 后端做出企业决策而且数据库的用户完全可能遍及世界各地在确定因从 Oracle 到 SQL Server这一迁移过程而受到影响的用户之时你必须考虑到以上所有这些可能性

什么应用程序要用到它?

现在假设你一个挨一个地问遍了所有的用户以了解谁在使用 Oracle ?而他们的回答恰恰都是否定的那么你接下来就应该查看记录文件了解哪些工作站正在访问数据库在你检查这些记录文件的时候你可能会发现不仅仅只有工作站才访问数据库其他服务器也要访问数据库

拿起笔来记下正在访问数据库的服务器然后找出这些服务器访问数据库的特定应用程序通过比较数据表内保存的数据和服务器上运行的应用程序即可确定出这类应用程序

Oracle服务器上在运行什么应用程序?

既然你已经知道了访问数据库的用户和外部应用程序现在你就需要找出数据库服务器自身正在运行的应用程序了这些应用程序可能是数据库的存储过程(以及相应的触发器定制数据类型以及安全性设置等)也可能是不在 Oracle 以内运行的独立应用程序你尤其得注意添加到服务器之上的 Oracle 开发工具

迁移到 SQL Server

你永远都不要沖动地立即拨去Oracle 服务器的电源装上在 SQL Server关键服务器在迁移的时候一定要三思而后行为什么这个过程要专门起个迁移(migration)这名字?还不是因为迁移总不是突然发生的如果你采取一些简单的合理步骤迁移过程就能在没有任何障碍的情况下实现

本机应用程序和外部应用程序

迁移应用程序请采取以下步骤

在网络中安装新的 SQL Server

创建应用程序使用的设备和数据表

禁止应用程序访问数据库而实现应用程序的离线

从 Oracle 拷贝当前数据到 SQL Server

把所有的应用程序都指向新数据库

允许应用程序访问数据表和设备中的新数据

考虑SQL

在 SQL Server和 Oracle 之间迁移存在一个要命的问题它们分别说着 SQLPL/SQL (Oracle)和TransactSQL (微软)这两种不同的SQL方言

在大多数情况下如果你能使用其中一种SQL语言就多半能使用其它的SQL语言考虑到SQL的函数操作符语句等等因素我特意搞了一份SQL程序员参考这份资料表明了各种DBMS所支持的特性当然如果 SQL 产品的这些美国供应商们都老老实实遵守美国标准SQL(ANSISQL)哪里还会产生这样大的问题!

此外你你还可能会遭遇以下的问题

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函数

ConcatenationSQL Server 不支持 ANSI || 连接方法但是 SQL Server 却可以支持了现在两种数据库都都采用加号(+)表示连接但最好还是把这个符号用在算术运算上吧!

就看你到底用的是两种服务器的具体版本了有关 SQL 语言的迁移问题几乎总是会突然在没有预料到的情况下冒出来

放弃Oracle 的业务案例

这种数据库的迁移并不是简单的感情游戏选择微软产品而非 Oracle 是受到业务案例支持的Oracle 在法庭和宣传战中为了打败微软投入了相当多的资源然而从经济性的角度来看Oracle并不具更高的性价比此外Oracle 只有一种核心产品相比微软还是底气不足复杂的销售过程之外你最好得找个更牛气点的公司提供支持这个公司应该健康向上产品受到普遍欢迎在遭遇更强大的对手之前得保证这家公司至少在数年之内非常强大

迁移到 SQL Server又能获得什么呢?

首先你获得的系统同你的网络体系结构保持了高度的一致性你无需专人负责 UNIX 系统的管理为 DBMS 量身打造的管理工具能以最佳状态同那些网络操作系统工具协同工作

其次系统实现了对 NET 应用程序的内在支持NET体系结构并不要求你一定要使用 SQL Server但这种服务器是缺省的数据库用于Oracle 的 ODBC 驱动程序当然也不错但它们总是一个可能的故障点

第三NET网络下采用Oracle的成本比采用SQL Server更高当你购买更多的WinK 服务器许可证以及VSNET和Office许可证时你可能会得到折扣

最后就算你单独购买了 SQL Server系统也可能比Oracle来得便宜最近购买Oracle 许可证在讨价还价的时候还难得像拔牙似的我记得曾问过一个销售代表价格他竟然说你买得起吗?

小结

如果你正在营造NET网络采用SQL Server作为你的DBMS是理智的原因在于它正是微软 NET Server应用套件的核心组成部分从平台之间的迁移是一个必须仔细考虑周密部署的重要过程在转换平台之前你更应该拥有一个统一有效易于管理和可靠的NET基础

上一篇:熟练Oracle的Sql语句必做18道

下一篇:Oracle的Package的作用及用法