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

SQL Server 排序規則變更完整指南:從 7.0 到 2000 及跨版本遷移

     編輯:關於SqlServer

排序規則定義了字元的位元模式、排序次序與比較規則(區分大小寫、重音、假名等)。SQL Server 7.0 僅支援單一伺服器級排序規則;SQL Server 2000 起支援資料庫、資料行層級的多重排序規則。本文系統整理不變更排序規則的遷移方法、跨版本轉換步驟、master 資料庫重建細節,助您安全完成排序規則遷移。

一、不變更排序規則的遷移方法

以下作業保留原資料庫排序規則,不發生轉換:

  • 備份/還原:還原至不同排序規則的伺服器,資料庫排序規則維持原狀。
  • 分離/附加:附加至不同排序規則的伺服器,資料庫排序規則不變。
  • 複製資料庫精靈:本質為自動化分離/附加,排序規則同樣保留。(僅 SQL 2000 支援)

二、SQL Server 7.0 之間轉換排序規則

必須在目標伺服器重建物件,再以 DTS/bcp 遷移資料:

  1. 備份來源資料庫。
  2. 用企業管理員為所有物件產生腳本。
  3. 用 DTS/bcp 導出所有資料表資料。
  4. 在目標伺服器建立新資料庫(將使用目標伺服器預設排序規則)。
  5. 在查詢分析器執行腳本重建物件(資料表/資料行繼承資料庫排序規則)。
  6. 用 DTS/bcp 導入資料至目標資料表。

三、SQL Server 7.0 → 2000 轉換排序規則

關鍵差異:目標資料庫/資料行須預先建立正確排序規則,DTS 必須啟用「使用排序規則」選項進行碼頁轉換。

  1. 備份來源資料庫。
  2. 產生所有物件腳本;若資料行需特定排序規則,手動修改腳本中的 COLLATE 子句。
  3. 在目標伺服器以適當排序規則建立新資料庫。
  4. 執行腳本重建物件(新資料表/資料行採用資料庫排序規則,除非腳本指定)。
  5. 用 DTS/bcp 遷移資料。DTS 設定:啟用「使用排序規則」;停用「先建立目標物件」(物件已存在)。
注意:請勿用 SQL 7.0 版 DTS 與 SQL 2000 互傳物件,必須使用 SQL 2000 版 DTS。

四、SQL Server 2000 內部轉換排序規則

  1. 備份來源資料庫。
  2. 檢查是否有資料行使用 COLLATE 子句(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLLATION_NAME IS NOT NULL)。
  3. 在目標伺服器以目標排序規則建立新資料庫。
  4. 無 COLLATE 子句:用 DTS 啟用「使用排序規則」直接遷移資料(碼頁轉換)。
  5. 有 COLLATE 子句:需分階段處理:
    1. 產生腳本(排除索引、觸發器、PK、FK、預設、檢查條件),勾選「僅為 7.0 相容功能產生腳本」以移除 COLLATE 子句。
    2. 在目標資料庫執行腳本建立物件(繼承資料庫排序規則)。
    3. 用 DTS 僅遷移資料(不建立物件)。
    4. 資料遷移成功後,產生所有約束/索引腳本並在目標執行。

五、變更 master 資料庫排序規則(重建 master)

重建 master 等同建立新 master,msdb、model 同步重建。執行前必備:

  • master、msdb、model 完整備份。
  • 匯出所有登入資訊(sp_help_revlogin 腳本)。
  • 為所有 SQL Agent 作業、警示、操作員產生腳本;遷移所有 DTS 套件。
  • 記錄 model 資料庫的所有自訂變更。

SQL Server 2000 重建 master 步驟

  1. 重建完成後,所有使用者資料庫需從備份還原或用 sp_attach_db 重新附加。
  2. 重建僅改變 master/model/msdb 排序規則,不改變使用者資料庫排序規則。若需變更,需用 ALTER DATABASE ... COLLATE 建立新資料庫,再以 DTS/bcp 遷移資料。
  3. ALTER DATABASE 不會自動變更資料行排序規則,資料行需用 ALTER TABLE ... ALTER COLUMN ... COLLATE,或利用 DTS 在建立資料表時指定排序規則(停用「先刪除現有物件」)。

SQL Server 7.0 重建 master 步驟

  1. SQL 7.0 不支援多重排序規則,重建前必須導出所有使用者資料庫資料與物件腳本。
  2. 以新排序規則重建 master(新資料庫自動繼承新預設排序規則)。
  3. 建立新資料庫、執行腳本重建物件、導入資料。

關鍵提醒

  • DTS「使用排序規則」控制碼頁轉換,不影響資料行層級的 COLLATE 定義。
  • 跨版本遷移務必使用較新版本的 DTS(SQL 2000 DTS 可連 SQL 7.0,反向不可)。
  • master 重建屬高風險作業,非維護窗口嚴禁操作,並備妥完整回滾計畫。
  • 排序規則變更會影響索引順序、比較語意、應用程式排序結果,遷移後必須完整回歸測試。

掌握排序規則遷移細節,能讓跨版本、跨伺服器、跨語系的資料庫遷移更受控、更安全。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved