熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server轉換數據庫的排序規則

2022-06-13   來源: SQL Server 

  什麼是排序規則?

  排序規則指定了表示每個字符的位模式它還指定了用於排序和比較字符的規則排序規則具有下面的特征

  ◆語言

  ◆區分大小寫

  ◆區分重音

  ◆區分假名

  要了解服務器當前使用的排序規則可以在 SQL 查詢分析器中運行 sp_helpsort 系統過程

  SQL Server 不支持使用多個排序規則的數據庫因此在 SQL Server 中創建的所有數據庫均使用默認的排序規則SQL Server 支持多個排序規則SQL Server 數據庫可使用除默認排序規則以外的其他排序規則此外SQL Server 還支持使用排序規則(除數據庫創建的排序規則外)的列

  在 DTS 中使用“使用排序規則”選項的條件

  SQL Server 可包含多個數據庫或列它們可以使用除默認排序規則以外的排序規則因此在數據轉換服務 (DTS) 中引入了名為“使用排序規則”的新選項“使用排序規則”選項的行為由要執行的轉換的類型決定如果要在 SQL Server 的兩個實例之間傳輸數據且啟用了“使用排序規則”選項則數據將從源代碼頁轉換到目標代碼頁如果沒有啟用“使用排序規則”選項且 SQL Server 的兩個實例中的代碼頁相同則會直接傳輸數據如果代碼頁不同則數據將從源代碼頁轉換到目標代碼頁但是在傳輸數據時轉換可能會出現錯誤

  注意如果排序規則用於數據本身並且列使用的是 COLLATE 子句則排序規則很重要“使用排序規則”選項確定當數據從一個排序規則傳輸到另一個排序規則時是否轉換代碼頁“使用排序規則”選項不會影響是否設置了列定義的 COLLATE 屬性因此如果源表包含使用 COLLATE 子句創建的帶有特定排序規則的列則此排序規則將在傳輸數據時得以保留而不管是否在數據轉換服務向導中啟用了“使用排序規則”選項

  不改變數據庫排序規則的轉換方法

  下列方法不改變數據庫的排序規則

  ◆備份和還原在某服務器上還原數據庫時如果該服務器使用的排序規則與用於備份的服務器使用的排序規則不同則不會將還原後的數據庫轉換為使用新的排序規則數據庫排序規則仍保持原樣

  ◆分離和重新附加如果分離使用某一排序規則創建的數據庫並且將該數據庫重新附加到使用其他排序規則的另一服務器則該數據庫的排序規則不會改變數據庫的排序規則仍保持原樣

  ◆復制數據庫向導復制數據庫向導實質上使分離和重新附加的過程自動化了數據庫的排序規則仍保持原樣

  注意復制數據庫向導僅在 SQL Server 中可用

  在 SQL Server 中轉換數據庫的排序規則

  要在運行 SQL Server 的兩台計算機之間更改數據庫的排序規則必須在目標服務器上創建用戶數據庫和所有對象然後使用 DTS 或 bcp 實用工具傳輸數據

  要將數據庫從運行 SQL Server 的計算機傳輸到運行 SQL Server 且具有另一排序規則的計算機請按照下列步驟操作

  備份源數據庫

  使用 SQL Server 企業管理器為源數據庫中的所有對象創建腳本

  要從數據庫的所有表中導出數據請使用 DTS 或 bcp 實用工具

  使用 SQL Server 企業管理器或 CREATE DATABASE 語句在目標服務器上創建新的數據庫

  注意當使用 CREATE DATABASE 語句時數據庫將使用與運行 SQL Server 的計算機相同的排序規則

  使用 SQL 查詢分析器來運行在步驟 中創建的腳本以便在目標數據庫中重新創建所有對象

  注意此表和列將使用與運行 SQL Server 的計算機相同的排序規則

  使用 DTS 或 bcp 實用工具將數據導入到目標表中

  將 SQL Server 中數據庫的排序規則轉換為 SQL Server 中的排序規則

  要在 SQL Server 和 SQL Server 之間更改數據庫的排序規則必須在傳輸數據之前在目標服務器上使用適當的排序規則創建數據庫列或同時創建數據庫和列但是在將數據從 SQL Server 傳輸到 SQL Server 可以使用 DTS 刪除並重新創建對象因此在執行此操作時必須在 DTS 中啟用“使用排序規則”選項

  注意請不要使用 SQL Server 中的 DTS 實用工具與運行 SQL Server 的計算機相互傳輸所有對象如果必須在 SQL Server 和 SQL Server 之間傳輸數據則必須使用 SQL Server 中的 DTS 實用工具

  要將 SQL Server 中數據庫的排序規則轉換為 SQL Server 中的排序規則請按照下列步驟操作

  備份源數據庫

  使用 SQL Server 企業管理器為源數據庫中的所有對象創建腳本

  如果列必須使用其他排序規則而不使用目標數據庫上的默認排序規則請對腳本中相應列的排序規則進行必要的更改

  使用適當的排序規則在目標服務器上創建新的數據庫

  使用 SQL 查詢分析器在目標服務器上運行在步驟 中創建的腳本以便在數據庫中重新創建所有對象

  注意新表和列使用與數據庫相同的排序規則除非您為這些列指定了其他排序規則

  使用 DTS 或 bcp 實用工具傳輸數據

  注意如果使用 DTS請驗證下列信息

  ◆確保在將數據從 SQL Server 傳輸到 SQL Server 時啟用了“使用排序規則”選項

  ◆因為已在目標服務器上使用適當的排序規則創建了對象所以要禁用“首先創建目標對象”選項

  在 SQL Server 中轉換數據庫的排序規則

  要在 SQL Server 中轉換數據庫的排序規則請按照下列步驟操作

  備份源數據庫

  注意所有列是否使用 COLLATE 子句

  使用適當的排序規則在目標服務器上創建新的數據庫

  如果沒有列使用 COLLATE 子句請使用 DTS 將數據傳輸到目標服務器為此請啟用“使用排序規則”選項以進行代碼頁轉換並將數據轉換為目標數據庫上的新排序規則如果所有列均使用 COLLATE 子句請按照下列步驟操作

  a為所有對象(不包括索引觸發器主鍵外鍵默認設置和約束)生成腳本此外確保啟用了“僅為與 版兼容的功能編寫腳本”選項以便從腳本刪除 COLLATE 子句

  注意使用“僅為與 版兼容的功能編寫腳本”選項時可以更改排序規則但是生成腳本時將不考慮任何新的 SQL Server 選項(包括用戶定義的函數擴展屬性INSTEAD OF 觸發器和視圖上的索引)

  b在目標數據庫上運行步驟 a 中創建的腳本以便使用目標數據庫的排序規則創建對象

  c使用 DTS 僅傳輸源數據庫中的數據

  d成功傳輸數據後將會為源數據庫中的所有約束外鍵主鍵和索引生成腳本

  e在目標數據庫上運行步驟 d 中創建的腳本

  更改 master 數據庫的排序規則

  如果要更改 master 數據庫的排序規則則必須重建 master 數據庫在重建 master 數據庫時實質上是創建了新的 master 數據庫因此重建 master 數據庫之前應考慮下列事項

  ◆確保創建了當前 master 數據庫的有效備份在重建 master 數據庫時還會重建 msdb 數據庫和 model 數據庫因此在重建 master 數據庫之前必須備份 msdb 數據庫和 model 數據庫msdb 數據庫是用於存儲 SQL Server 作業警報運算符和 DTS 包的系統數據庫model 數據庫是創建新數據庫時所使用的模板數據庫

  ◆因為重建 master 數據庫會創建一個新的 master 數據庫所以必須在重建 master 數據庫之後重新輸入現有登錄信息因此還必須在重建 master 數據庫之前導出登錄信息然後在重建 master 數據庫後導入登錄信息

  ◆因為在重建 master 數據庫時會重建 msdb 數據庫所以在重建 master 數據庫之前必須為所有作業警報和運算符生成腳本此外還必須確保移動了所有 DTS 包

  ◆因為在重建 master 數據庫時會重建 model 數據庫所以在重建 master 數據庫之前必須記下或導出以前對 model 數據庫所做的全部更改或為其生成腳本重建 model 數據庫之後請重新應用已記錄的全部更改

  在 SQL Server 中更改 master 數據庫的排序規則

  更改 master 數據庫的排序規則之前請按照下列步驟操作

  重建 master 數據庫之後不會自動恢復在重建此數據庫之前創建的所有數據庫因此所有數據庫必須從備份進行還原或者如果文件仍在磁盤上則可以使用 sp_attach_db 系統存儲過程重新附加數據庫請確保在重建 master 數據庫之前將所有必要的信息重新附加到現有數據庫

  在重建 master 數據庫時僅更改 master 數據庫model 數據庫和 msdb 數據庫的排序規則不會更改用戶數據庫的排序規則要更改現有用戶數據庫的排序規則或者使用適當的排序規則創建新的數據庫請使用 ALTER DATABASE 命令然後使用 DTS 或 bcp 實用工具將數據傳輸到新的數據庫

  注意如果在 SQL Server 中使用 ALTER DATABASE 命令來更改數據庫的排序規則則表中列的排序規則將不會自動更改要更改列的排序規則請使用 ALTER TABLE 命令和 ALTER COLUMN 命令如果使用 DTS則可以在傳輸數據或使用“使用排序規則”選項之前使用適當的排序規則創建表和列如果使用的 DTS 和表已經包含適當的排序規則請確保在運行軟件包之前禁用了“首先刪除現有對象”選項

  在 SQL Server 中更改 master 數據庫的排序規則

  更改 master 數據庫的排序規則之前請按照下列步驟操作

  SQL Server 不支持數據庫使用除默認排序規則以外的排序規則因此在重建 master 數據庫之前請從用戶數據庫中導出所有數據

  為數據庫中的所有對象生成腳本

  使用適當的排序規則重新創建 master 數據庫

  創建新的數據庫使用新的默認排序規則自動創建新的數據庫

  運行以前保存的腳本以重新創建對象然後導入以前導出的數據


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22349.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.