溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQLServer2005如何移植到Oracle10g

發(fā)布時(shí)間:2021-12-07 10:06:21 來(lái)源:億速云 閱讀:142 作者:iii 欄目:數(shù)據(jù)庫(kù)

這篇文章主要介紹“SQLServer2005如何移植到Oracle10g”,在日常操作中,相信很多人在SQLServer2005如何移植到Oracle10g問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”SQLServer2005如何移植到Oracle10g”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

  由于目前OMWB僅支持SQLServer2000,根據(jù)官方網(wǎng)站的消息,OMWB的下一版會(huì)推出對(duì)SQLServer 2005的支持,所以在目前的情況下只能先把庫(kù)從SQLServer 2005移植到SQLServer 2000,這就是我們移植過(guò)程的第一步了。

  SQLServer2005怎樣移植到Oracle10g

  一、SQLServer 2005-->SQLServer 2000

  一直以來(lái),版本要降級(jí)都是很困難的,因?yàn)樵谛掳姹局斜厝粫?huì)有些新的特性,而如果剛好湊巧你使用到了這些特性的話,在降級(jí)到低版本時(shí)就會(huì)碰到一些問(wèn)題,在經(jīng)過(guò)幾次的嘗試后,總結(jié)而言,這個(gè)過(guò)程還是比較容易做的,畢竟是同樣的數(shù)據(jù)庫(kù),再怎么樣也不會(huì)出太大的問(wèn)題,不過(guò)也沒(méi)有像將庫(kù)從SQLServer 2000升級(jí)為SQLServer 2005那么簡(jiǎn)單,整個(gè)移植過(guò)程這么進(jìn)行:

  1、基于SQLServer 2005的數(shù)據(jù)導(dǎo)出將表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到SQLServer 2000;

  這步中需要注意的是默認(rèn)情況下SQLServer會(huì)將表和視圖一起導(dǎo)入,在這里不要選擇視圖,否則導(dǎo)入到SQLServer 2000后有些視圖會(huì)變成表,選擇需要導(dǎo)入的表后基本上這步不會(huì)出現(xiàn)什么問(wèn)題,可以完成表結(jié)構(gòu)和數(shù)據(jù)的移植。

  2、基于SQLServer 2005的生成腳本將視圖/函數(shù)/存儲(chǔ)過(guò)程移植到SQLServer 2000;

  這步需要慢慢來(lái),因?yàn)樵谝晥D/函數(shù)/存儲(chǔ)過(guò)程中你可能使用到了一些SQLServer 2005的新特性,如果碰到這樣的情況,只能是手工進(jìn)行修改,以使它完全符合SQLServer 2000的要求,盡管在生成腳本時(shí)你可以選擇生成的目標(biāo)版本為SQLServer 2000,但還是會(huì)有部分腳本執(zhí)行是會(huì)出錯(cuò)的。

  在完成了SQLServer 2005到SQLServer 2000的移植后,就可以基于OMWB來(lái)把庫(kù)從SQLServer 2000移植到Oracle了,這步盡管有工具,還是會(huì)比較的麻煩,總結(jié)如下:

  二、SQLServer 2000-->Oracle 10g

  關(guān)于如何基于OMWB將庫(kù)從SQLServer 2000移植到Oracle 10g的操作步驟可參見(jiàn)此篇文檔:

  大家現(xiàn)在從oracle官方站下的話可能會(huì)找不到sqlserver 2000的插件包,如果找不到的話可以從這里下載:

  我在這里要總結(jié)的是基于OMWB將庫(kù)從SQLServer 2000移植到Oracle 10g后還需要手工做的一些事情,不要指望OMWB能無(wú)縫的幫你把庫(kù)從SQLServer移植到Oracle中,銀彈是不存在的,因此我們需要做些手工的工作完成庫(kù)的移植:

  SQLServer2005怎樣移植到Oracle10g

  1、移植表結(jié)構(gòu)和數(shù)據(jù)可能會(huì)出現(xiàn)的問(wèn)題;

  表中字段的默認(rèn)值/主鍵/外鍵/索引移植不過(guò)去,這些需要手工的進(jìn)行補(bǔ)充;

  2、移植視圖可能會(huì)出現(xiàn)的問(wèn)題;

  移植過(guò)去的視圖可能會(huì)出現(xiàn)各種語(yǔ)法錯(cuò)誤的問(wèn)題,這需要手工的修正,一般來(lái)說(shuō)都是較為簡(jiǎn)單的錯(cuò)誤;

  另外一種問(wèn)題就是有些視圖可能會(huì)無(wú)法移植過(guò)去,這些視圖就只能在對(duì)比OMWB的移植報(bào)告后找出來(lái)手工的進(jìn)行移植了。

  3、移植函數(shù)/存儲(chǔ)過(guò)程可能會(huì)出現(xiàn)的問(wèn)題;

  移植過(guò)去的函數(shù)/存儲(chǔ)過(guò)程中可能仍然會(huì)有不少的語(yǔ)法問(wèn)題,例如像SCOPE_IDENTITY()、REPLICATE、newid()這些OMWB不知道該怎么處理的函數(shù),還有像返回Table類型的這種函數(shù),這些都只能在移植后手工的來(lái)進(jìn)行糾正,關(guān)于函數(shù)不同造成的語(yǔ)法錯(cuò)誤的現(xiàn)象大家可以參看這篇文檔來(lái)做SQLServer和Oracle函數(shù)的對(duì)照:

  移植過(guò)去的函數(shù)/存儲(chǔ)過(guò)程可能編譯是沒(méi)有問(wèn)題,也就是Oracle認(rèn)為沒(méi)有語(yǔ)法問(wèn)題,但執(zhí)行起來(lái)卻會(huì)報(bào)錯(cuò),像字符串相加,經(jīng)過(guò)OMWB移植后有些字符串相加會(huì)替換成||,但是有些會(huì)遺漏,這個(gè)時(shí)候也只能手工來(lái)糾正這些錯(cuò)誤了;

  移植過(guò)去的函數(shù)/存儲(chǔ)過(guò)程在執(zhí)行過(guò)程中可能會(huì)出現(xiàn)某些表的主鍵值不能為空的現(xiàn)象,造成這種現(xiàn)象的原因多數(shù)為在SQLServer中該字段的默認(rèn)值定義的為IDENTITY,但在Oracle中沒(méi)法賦予這樣的默認(rèn)值,只能在插入的sql語(yǔ)句中加上對(duì)于主鍵字段的賦值,可采用sequence的方式來(lái)生成順序號(hào);

  移植過(guò)去的函數(shù)/存儲(chǔ)過(guò)程中如果其中的查詢語(yǔ)句是采用字符串的方式,然后動(dòng)態(tài)執(zhí)行的話,這個(gè)時(shí)候的查詢語(yǔ)句就得手工修改為符合oracle的語(yǔ)法了,因?yàn)镺MWB在移植時(shí)是不會(huì)對(duì)字符串形式的查詢語(yǔ)句來(lái)做處理的;

  部分函數(shù)/存儲(chǔ)過(guò)程會(huì)由于OMWB確實(shí)無(wú)法處理,造成移植不到oracle,這個(gè)時(shí)候也必須參照OMWB的移植報(bào)告找出這些函數(shù)/存儲(chǔ)過(guò)程來(lái)手工移植了。

  整個(gè)移植過(guò)程可能會(huì)碰到比上面所列出的更多的別的問(wèn)題,可以看出整個(gè)移植過(guò)程確實(shí)需要耗費(fèi)不小的工作量,但總體而言,完成的難度并不高。

  其實(shí)真的是這樣嗎?當(dāng)然不是,就算你完成了上面的移植工作,那也只能說(shuō)表面看上去移植是完成了,很有可能會(huì)出現(xiàn)這個(gè)存儲(chǔ)過(guò)程語(yǔ)法等等都沒(méi)有問(wèn)題了,但執(zhí)行的效果和SQLServer就是不一樣,這是為什么呢?可能會(huì)是因?yàn)镺racle和SQLServer在并發(fā)控制、事務(wù)機(jī)制上是不同的,而這會(huì)影響到程序調(diào)用時(shí)的sql的編寫、存儲(chǔ)過(guò)程的編寫等等,也就是說(shuō),在上面的移植過(guò)程的工作完成后,還得仔細(xì)檢查現(xiàn)在的sql語(yǔ)句/函數(shù)/存儲(chǔ)過(guò)程是否根據(jù)Oracle的機(jī)制達(dá)到了原來(lái)在SQLServer中期望的效果,只有做到這步的效果是一樣的,才可以說(shuō)移植過(guò)程完成了。

到此,關(guān)于“SQLServer2005如何移植到Oracle10g”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI