数据库使用情况

数据库使用情况

我目前正在启动一个从 Oracle 到 SQL 2008 的迁移项目。由于我目前正在阅读《从 Oracle 迁移到 SQL Server 2005 的 SSMA 官方指南》,因此我希望获得一些来自个人经验的建议和指点。

如果指南和文章中出现的问题能够以有组织的方式突出,并附有讨论和解决方案,将不胜感激。

谢谢

答案1

从管理和数据库使用角度来看,Oracle 和 SQL Server 有很大不同。

数据库使用情况

准备好花费大量时间进行移植。我首先想到的一些问题如下:

PL/SQL 与 T-SQL

这些语言本身就存在很大差异,因此需要为脚本和存储过程进行大量移植工作。这包括不同的连接运算符(||vs. +)、函数名称和细节的变化(NVLvs. COALESCE)以及概念差异(异常处理、区分大小写)。其他一些示例:

游标与临时表

在 Oracle 中使用游标所做的大多数操作都是在 SQL Server 中使用临时表完成的。

序列与身份

它们基本上是等效的,但是您必须更改使用它们的任何过程的语法。

数据库管理

它们大多具有相同的功能,有时名称不同,副作用也不同。以下是一些亮点:

  • 数据(卸载)加载(数据泵或 sql*loader 或 exp/imp 与 DTS 或 bcp)
  • 数据字典(DBA_* 与 INFORMATION_SCHEMA)
  • 事务日志设置(存档日志与恢复模型)
  • 表类型(索引组织与聚集索引)
  • 锁定机制(在 Oracle 中读取不锁定,在 SQL 服务器中则不然)

简而言之,从 Oracle 转到 SQL Server(或反之亦然)时,学习曲线相当长。欢迎随意添加到此列表。

答案2

Oracle 和 SQL Server 之间有一些不重叠的功能,并且它们的工作方式在很多方面有很大不同。例如:

  • Oracle 没有与标识列直接等效的功能。使用序列可以以不同的方式实现等效功能。

  • PL/SQL 和 T-SQL 是截然不同的语言。如果您有大量的存储过程代码,请准备好花费大量时间来移植它。此外,T-SQL 习语通常与 PL/SQL 有很大不同。例如,T-

    SQL 在设置操作方面比 PL/SQL 好得多,而 PL/SQL 在使用游标(例如并行循环构造)方面则好得多。在 PL/SQL 中迭代完成的某些事情可能最好使用 T-SQL 中的设置操作和临时表来完成。

  • SQL Server 中的比较默认不区分大小写。Oracle 中的比较区分大小写。

  • 在 SQL Server 中使用表分区与使用 Oracle 有很大不同(并且稍微笨拙一些)。

答案3

Microsoft 拥有一套全面的资源,可帮助将应用程序和数据库从 Oracle 迁移到 SQL Server 2008。请查看主迁移页面SQL Server 2008 解决方案 - 迁移- 它包括迁移方法、帮助您的工具以及一些客户推荐。

希望这可以帮助。

答案4

我更喜欢使用第三方应用程序来迁移我的数据,当我将 MS SQL 迁移到 Foxpro 时,我使用数据加载器,它运行良好,并且它可以迁移几乎任何数据库。

免费下载 :http://www.dbload.com

相关内容