首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

資料庫升級遷移實戰:從 SQL Server 6.5 到 2000 的三種方案比較與最終成功方案

     編輯:關於SqlServer

案例背景

  • 電廠物資系統,NT 4.0 + SQL Server 6.5 (英文版),PowerBuilder 6.0 開發,運行 5 年,資料量 ~300MB。
  • 需升級至 SQL Server 2000,表面看似簡單,實則暗藏亂碼、日期格式、BCP 截斷等陷阱。

三種方案嘗試與失敗分析

方案做法失敗現象
1. BCP 匯出/匯入 SQL 6.5 用 bcp ... out,SQL 2000 用 bcp ... in ① 字串資料右截斷 ② 中文欄位亂碼 ③ 含中文的日期欄位格式不識別導入失敗
2. 升級精靈 套用補丁、重設驗證模式後執行升級 ① 升級完成報告不可見錯誤,資料庫空空如也 ② 精靈透明度低,無法追蹤錯誤細節
3. ODBC + DTS 匯入 設定 SQL 6.5 ODBC DSN,用 SQL 2000 匯入精靈 更改 90 多個表名後導入成功,但中文全亂碼;重建 Latin1_General_BIN 排序資料庫再導入,亂碼依舊

最終成功方案:BCP 搭配 SQL 2000 版本工具 + 手動建構結構

  1. 產生建表/預存程序/檢視表腳本:企業管理器 → 產生 SQL 腳本存檔。
  2. 產生 BCP 指令批次檔:
    SELECT 'bcp mydb.dbo.' + name + ' out /DATA/' + name + '.TXT -Usa -P*** -Sserver -c -C1252'
    FROM mydb..sysobjects WHERE type='U'

    → 存為 bcpout.bat,複製改 in 為 bcpin.bat。
  3. 關鍵:使用 SQL 2000 版 BCP 工具:
    將 C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe 與 Resources 資料夾複製至 SQL 6.5 機器 bcp 工作目錄(備份原 bcp65.exe)。
    原因:SQL 6.5 BCP 匯出日期格式為 2003 十二月 23 15:09AM,SQL 2000 無法識別;SQL 2000 BCP 匯出標準格式相容。
  4. 執行匯出:SQL 6.5 機器執行 bcpout.bat 完成。
  5. 目標端建立資料庫與結構:
    企業管理器新建同名資料庫,排序規則 Chinese_PRC_BIN。
    查詢分析器執行建表腳本、預存程序腳本、建立檢視表。
  6. 執行匯入:SQL 2000 機器執行 bcpin.bat。
  7. 驗證:企業管理器檢視資料,中文正常、日期格式正確。
  8. 應用程式遷移:複製 PB 應用至新伺服器測試,一切正常。

關鍵成功因子總結

  • 統一使用 SQL 2000 版 BCP 確保日期/字元格式相容。
  • 指定 代碼頁 1252 (-C1252) 正確處理中文。
  • 目標資料庫排序規則設為 Chinese_PRC_BIN(二進位比較,避免排序衝突)。
  • 手動建構結構(腳本)而非依賴精靈自動建立,掌控每個細節。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved