db2数据库迁移到mssql记录之一

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 18:28 点击:

一个系统,原来是在DB2上跑的,现在有需求,要求支持mssql,第一天折腾过程如下:
1、找到powerdesigner表设计文件,生成mssql的脚本,导进mssql数据库。(直接通过db2导出的脚本,根本不能在mssql上面运行)
 
2、导入脚本时,有个别语句报错,导致有个别表不能成功创建。处理方法是把两个不同库的表名都找出来,通过对比工具,找出没创建的表,调整建表语句,再重新创建。这时候没成功创建的表已不多,可手工逐个创建。
    DB2: select tabname from syscat.TABLES where tabname like ....
    Mssql: select name from sysobjects where name like ....
 
在操作过程,出现不少问题,如:
1、mssql的timestamp类型与db2的timestamp类型功能不一样,mssql一个表只能有一个 timestamp 列,mssql的timestamp的取值形式为:0x0000000000053CA5,db2 timestamp 对应 mssql datetime, timestamp取值形式如:2011-07-19 09:43:50.290, 把导出脚本的timestamp换成datetime。
 
2、DB2控制中心导出的DDL,包含很多DB2本身的东西在里面,不适合其它数据库使用。如:“RESTRICT ONUPDATE”,在mssql中会报错“消息 156,级别 15,状态 1,第 20 行  关键字 'RESTRICT' 附近有语法错误”。处理方法是手工把这些语句删除。
 
3、CLOB 类型转为 ntext,LONG VARGRAPHIC 类型转为 ntext。
 
4、主键约束名称报错:消息 2714,级别 16,状态 5,第 1 行, 数据库中已存在名为 'P_KEY_1' 的对象。消息 1750,级别 16,状态 0,第 1 行,无法创建约束。请参阅前面的错误消息。
mssql中不允许同名的主键约束名称,把P_KEY_1改为P_KEY_2,P_KEY_3之类
 
5、含有desc字段的语句,在导入时,报错。mssql中desc是关键字,暂时处理方法是给desc加上双引号,或是改名,如descpt之类,这个在后期运行系统时还需要测试。
 
通过以上操作和问题调整,基本把表从db2迁移到mssql了,接下来的还有视图、存储过程、函数等的调整。

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • db2管理工具小结
      • DB2数据库的导出与导入(Windows客户端)
      • db2 CLP中如何换行
      • DB2查看表结构及所用表语句
      • DB2 · CREATE TABLESPACE
      • 使用DB2对象:创建模式、表和视图
      • DB2数据库逻辑卷的复制
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1