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

SQL Server 排序規則轉換全攻略:從伺服器層級到欄位層級的最佳實踐

     編輯:關於SqlServer

排序規則決定字元比較、排序與代碼頁。SQL Server 2000/2005 支援伺服器、資料庫、欄位、運算式四層級排序規則。本文詳細說明 COLLATE 子句用法、DTS「使用排序規則」選項行為、跨排序規則資料轉換陷阱,以及如何安全變更現有資料庫排序規則。

排序規則層級與繼承

  1. 伺服器層級:安裝時決定,預設為資料庫與欄位提供繼承基準。
  2. 資料庫層級:CREATE DATABASE ... COLLATE 或 ALTER DATABASE 變更,影響新建表欄位預設值。
  3. 欄位層級:COLLATE Chinese_Taiwan_Stroke_CI_AS 覆寫資料庫預設,允許同表不同欄位用不同規則。
  4. 運算式層級:查詢中指定 WHERE Col COLLATE Latin1_General_CS_AS = 'value'。

DTS 跨排序規則轉換陷阱

  • 啟用「使用排序規則」:依代碼頁轉換資料,可能發生字元遺失或錯誤。
  • 未啟用且代碼頁相同:直接複製位元組,速度最快。
  • 欄位定義含 COLLATE 子句:無論 DTS 設定,該欄位排序規則隨資料保留。

變更現有資料庫排序規則步驟

  1. 匯出結構腳本(含 COLLATE 子句)。
  2. 建立新資料庫指定目標排序規則。
  3. 執行結構腳本建立物件。
  4. 使用 BCP/SSIS/匯入匯出精靈搬移資料,注意代碼頁轉換。
  5. 驗證資料完整性、索引、外鍵、檢查約束。

排序規則變更屬高風險操作,務必在測試環境完整演練。

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