程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 數據庫升遷從sqlserver6.5到sqlserver2000

數據庫升遷從sqlserver6.5到sqlserver2000

編輯:關於SqlServer

本文獻給在從sql6.5到sqlserver2000的數據庫升級過程中的迷茫的朋友。

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

一家電廠,運行著若干應用系統,其中以物資系統最為重要。體系結構,大致是這樣的:NT4.0 server 簡體中文版 + SQL Server6.5 英文 (物資系統數據)應用系統用PowerBuilder6.0開發,已經運行了5年,數據量大概有300M 左右。隨著系統不斷的使用,現在需要對現有系統升級,從sql6.5到sqlserver2000 從表面上看似乎是數字的變遷,或者是簡單的導入導出就可以了,但是我把它想的太簡單了。

針對此升級,我使用了三套方案:
1、在sqlserver6.5及其上用外部工具bcp ... out 命令導出;
用其中的一個表測試,結果導入sqlserver2000

故障1:bcp ...in 提示“字符串數據,右截位”;
故障2:漢字的字段顯示亂碼;
故障3:有漢字的時間字段格式用bcp in 導入時不能成功。

2、用2000升級向導;

故障1:克服重重困難(要求打補丁,重置登陸方式等)升級完後報告一些不可查看的錯誤,然後,打開數據庫一看,一無所有;

故障2:升級向導無法進行,透明程度高,無法進行錯誤跟蹤。

3、用odbc配置訪問sql6.5數據源,然後用sqlserver2000的導入向導;
故障:在更改了90多個新表名後,開始復制,成功了。但是,漢字顯示亂碼。隨後,在2000上重新建立一個latin general bin1 為排序的數據庫,再次導入,故障依舊。

經歷了一周的反復測試,反復失敗,最後決定還是采用第一種的方案比較靈活,先將具體步驟整理一下,以饔讀者。

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


說明:mydatabase 為數據庫名。
'/DATA/' 是運行bcp的目錄下的data目錄,需要事先建立。
*** 數據庫密碼。
servername 服務器名稱。
1252 是sqlserver6.5 的默認代碼頁,必須指定,否則輸出的漢字會亂碼 。

運行後將結果保存為bcpout.bat
再將 out 換成 in 生成bcpin.bat 文件用以在sqlserver2000的機器上運行。

5)好了,要使用bcp 了,但是我們不能使用sql6.5 上的bcp工具,在我的試驗當中用它導出的帶有日期字段的數據中會生成諸如“2003 十二月 23 15:09AM ”的格式,這樣在sqlserver2000機器上用bcp in 導入時會出現不認識日期格式而出現的復制錯誤。在此處,必須使用sqlserver 2000的bcp工具,方法:
打開c:\program files\Microsoft SQL Server\80\tools\binn,

將bcp.exe 和 resources 目錄一同拷貝到ntserver4.0 機器的 sqlserver6.5 bcp 工作路徑下(c:\mssql\binn,將原來的bcp.exe文件更名為bcp65.exe);

6)在nt 機器上建立 upgradedb目錄,將bcpin.bat, bcpout.bat和剛才生成的腳本拷貝進來,再建立data目錄;
7)確保sqlserver 服務啟動後,雙擊運行bcpout.bat ,等待結束;
8)將 upgradedb 目錄拷貝或共享到sqlserver2000機器上;
9)打開sqlserver 2000 enterprise manager ,新建同名的數據庫,排序規則為Chinese_Prc_bin;
10)打開 query anlyzer ,選中該數據庫, 運行剛才生成的建立表的腳本,建立表結構;運行剛才生成的存儲過程的建立腳本,生成存儲過程... 新建和舊庫一樣的視圖;
11)打開 命令提示符狀態,進入upgradeDb目錄,運行bcpin.bat,等待結束(如果出錯,請檢查密碼,server name,路徑等)。
12)打開 enterprise manager ,打開數據庫,選中其中的表返回所有行,檢查數據
發現漢字顯示正常,日期格式也正常。

13)拷貝原來的應用程序到sqlserver2000的機器運行,發現一切照常,至此升級數據庫成功!

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