国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

數(shù)據(jù)庫升遷從sqlserver6.5到sqlserver2000

2024-07-21 02:31:11
字體:
供稿:網(wǎng)友

IUPRG(原作)

本文獻(xiàn)給在從sql6.5到sqlserver2000的數(shù)據(jù)庫升級(jí)過程中的迷茫的朋友。

筆者有幸碰到這樣一個(gè)案例:(有一句話叫:困難有多大,幸福就有多大,這不,幸福來了~)

一家電廠,運(yùn)行著若干應(yīng)用系統(tǒng),其中以物資系統(tǒng)最為重要。體系結(jié)構(gòu),大致是這樣的:NT4.0 server 簡(jiǎn)體中文版 + SQL server6.5 英文 (物資系統(tǒng)數(shù)據(jù))應(yīng)用系統(tǒng)用powerbuilder6.0開發(fā),已經(jīng)運(yùn)行了5年,數(shù)據(jù)量大概有300M 左右。隨著系統(tǒng)不斷的使用,現(xiàn)在需要對(duì)現(xiàn)有系統(tǒng)升級(jí),從sql6.5到sqlserver2000  從表面上看似乎是數(shù)字的變遷,或者是簡(jiǎn)單的導(dǎo)入導(dǎo)出就可以了,但是我把它想的太簡(jiǎn)單了。

針對(duì)此升級(jí),我使用了三套方案:
1、在sqlserver6.5及其上用外部工具bcp ... out    命令導(dǎo)出;
   用其中的一個(gè)表測(cè)試,結(jié)果導(dǎo)入sqlserver2000

   故障1:bcp ...in 提示“字符串?dāng)?shù)據(jù),右截位”;
   故障2:漢字的字段顯示亂碼;
   故障3:有漢字的時(shí)間字段格式用bcp in 導(dǎo)入時(shí)不能成功。

2、用2000升級(jí)向?qū)В?BR>  
   故障1:克服重重困難(要求打補(bǔ)丁,重置登陸方式等)升級(jí)完后報(bào)告一些不可查看的錯(cuò)誤,然后,打開數(shù)據(jù)庫一看,一無所有;
  
   故障2:升級(jí)向?qū)o法進(jìn)行,透明程度高,無法進(jìn)行錯(cuò)誤跟蹤。

3、用odbc配置訪問sql6.5數(shù)據(jù)源,然后用sqlserver2000的導(dǎo)入向?qū)?
   故障:在更改了90多個(gè)新表名后,開始復(fù)制,成功了。但是,漢字顯示亂碼。隨后,在2000上重新建立一個(gè)latin general bin1 為排序的數(shù)據(jù)庫,再次導(dǎo)入,故障依舊。

   經(jīng)歷了一周的反復(fù)測(cè)試,反復(fù)失敗,最后決定還是采用第一種的方案比較靈活,先將具體步驟整理一下,以饔讀者。

   1)在nt server 4.0 機(jī)器上 打開sqlserver enterprise manager ,選中要升級(jí)的數(shù)據(jù)庫,選中表并且生成創(chuàng)建表的腳本;
   2)生成創(chuàng)建存儲(chǔ)過程的腳本;
   3)如果有視圖,也請(qǐng)另存為文本,以備使用;
   4)打開isql/w工具,選中待升級(jí)的數(shù)據(jù)庫,運(yùn)行以下語句生成bcp out/in 命令(要不然的話,手動(dòng)編輯很費(fèi)勁的):
    select 'bcp mydatabase.dbo.' + name + ' out ' +
 '/DATA/' + name + '.TXT' +
 ' -Usa  -P*** -Sservername -c -C1252'
 from mydatabase..sysobjects
 where type = 'U'


 說明:mydatabase 為數(shù)據(jù)庫名。
       '/DATA/'   是運(yùn)行bcp的目錄下的data目錄,需要事先建立。
        ***       數(shù)據(jù)庫密碼。
       servername 服務(wù)器名稱。
       1252       是sqlserver6.5 的默認(rèn)代碼頁,必須指定,否則輸出的漢字會(huì)亂碼 。
 
 運(yùn)行后將結(jié)果保存為bcpout.bat
 再將 out 換成 in 生成bcpin.bat 文件用以在sqlserver2000的機(jī)器上運(yùn)行。 

   5)好了,要使用bcp 了,但是我們不能使用sql6.5 上的bcp工具,在我的試驗(yàn)當(dāng)中用它導(dǎo)出的帶有日期字段的數(shù)據(jù)中會(huì)生成諸如“2003 十二月 23 15:09AM ”的格式,這樣在sqlserver2000機(jī)器上用bcp in 導(dǎo)入時(shí)會(huì)出現(xiàn)不認(rèn)識(shí)日期格式而出現(xiàn)的復(fù)制錯(cuò)誤。在此處,必須使用sqlserver 2000的bcp工具,方法:
   打開c:/program files/Microsoft SQL Server/80/tools/binn,將bcp.exe 和 resources 目錄一同拷貝到ntserver4.0 機(jī)器的 sqlserver6.5 bcp 工作路徑下(c:/mssql/binn,將原來的bcp.exe文件更名為bcp65.exe);
   
   6)在nt 機(jī)器上建立 upgradedb目錄,將bcpin.bat, bcpout.bat和剛才生成的腳本拷貝進(jìn)來,再建立data目錄;
   7)確保sqlserver 服務(wù)啟動(dòng)后,雙擊運(yùn)行bcpout.bat ,等待結(jié)束;
   8)將 upgradedb 目錄拷貝或共享到sqlserver2000機(jī)器上;
   9)打開sqlserver 2000 enterprise manager ,新建同名的數(shù)據(jù)庫,排序規(guī)則為Chinese_Prc_bin;
   10)打開 query anlyzer ,選中該數(shù)據(jù)庫, 運(yùn)行剛才生成的建立表的腳本,建立表結(jié)構(gòu);運(yùn)行剛才生成的存儲(chǔ)過程的建立腳本,生成存儲(chǔ)過程...  新建和舊庫一樣的視圖;
   11)打開 命令提示符狀態(tài),進(jìn)入upgradeDb目錄,運(yùn)行bcpin.bat,等待結(jié)束(如果出錯(cuò),請(qǐng)檢查密碼,server name,路徑等)。
   12)打開 enterprise manager ,打開數(shù)據(jù)庫,選中其中的表返回所有行,檢查數(shù)據(jù)
   發(fā)現(xiàn)漢字顯示正常,日期格式也正常。

   13)拷貝原來的應(yīng)用程序到sqlserver2000的機(jī)器運(yùn)行,發(fā)現(xiàn)一切照常,至此升級(jí)數(shù)據(jù)庫成功!

 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洛川县| 洱源县| 弋阳县| 隆回县| 安义县| 安国市| 红原县| 九台市| 理塘县| 云安县| 毕节市| 广元市| 广东省| 北宁市| 伊金霍洛旗| 涡阳县| 九寨沟县| 集安市| 绿春县| 大荔县| 明光市| 卢龙县| 原阳县| 甘泉县| 丰宁| 藁城市| 东平县| 大渡口区| 涡阳县| 肇东市| 信丰县| 无锡市| 会昌县| 昔阳县| 九龙坡区| 交口县| 息烽县| 蒲江县| 德庆县| 班玛县| 中超|