程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> db2數據庫遷移到mssql記錄之一

db2數據庫遷移到mssql記錄之一

編輯:DB2教程

一個系統,原來是在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了,接下來的還有視圖、存儲過程、函數等的調整。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved