什麼是定序?
定序指定了表示每個字元的位元模式。它還指定了用於排序和比較字元的規則。定序具有下面的特徵:
◆語言
◆區分大小寫
◆區分重音
◆區分假名
要瞭解伺服器當前使用的定序,可以在 SQL 查詢分析器中運行 sp_helpsort 系統過程。
SQL Server 7.0 不支援使用多個定序的資料庫。因此,在 SQL Server 7.0 中建立的所有資料庫均使用預設的定序。SQL Server 2000 支援多個定序。SQL Server 2000 資料庫可使用除預設定序以外的其他定序。此外,SQL Server 2000 還支援使用定序(除資料庫建立的定序外)的列。
在 DTS 中使用“使用定序”選項的條件
SQL Server 2000 可包含多個資料庫或列,它們可以使用除預設定序以外的定序。因此,在資料轉換服務 (DTS) 中引入了名為“使用定序”的新選項。“使用定序”選項的行為由要執行的轉換的類型決定。如果要在 SQL Server 2000 的兩個執行個體之間傳輸資料且啟用了“使用定序”選項,則資料將從原始碼頁轉換到目標字碼頁。如果沒有啟用“使用定序”選項且 SQL Server 2000 的兩個執行個體中的字碼頁相同,則會直接傳輸資料。如果字碼頁不同,則資料將從原始碼頁轉換到目標字碼頁。但是,在傳輸資料時,轉換可能會出現錯誤。
注意:如果定序用於資料本身並且列使用的是 COLLATE 子句,則定序很重要。“使用定序”選項確定當資料從一個定序傳輸到另一個定序時是否轉碼頁。“使用定序”選項不會影響是否設定了列定義的 COLLATE 屬性。因此,如果源表包含使用 COLLATE 子句建立的帶有特定定序的列,則此定序將在傳輸資料時得以保留,而不管是否在資料轉換服務嚮導中啟用了“使用定序”選項。
不改變資料庫定序的轉換方法
下列方法不改變資料庫的定序:
◆備份與還原:在某伺服器上還原資料庫時,如果該伺服器使用的定序與用於備份的伺服器使用的定序不同,則不會將還原後的資料庫轉換為使用新的定序。資料庫定序仍保持原樣。
◆分離和重新附加:如果分離使用某一定序建立的資料庫,並且將該資料庫重新附加到使用其他定序的另一伺服器,則該資料庫的定序不會改變。資料庫的定序仍保持原樣。
◆複製資料庫嚮導:複製資料庫嚮導實質上使分離和重新附加的過程自動化了。資料庫的定序仍保持原樣。
注意:複製資料庫嚮導僅在 SQL Server 2000 中可用。
在 SQL Server 7.0 中轉換資料庫的定序
要在運行 SQL Server 7.0 的兩台電腦之間更改資料庫的定序,必須在目標伺服器上建立使用者資料庫和所有對象,然後使用 DTS 或 bcp 工具 + 生產力傳輸資料。
要將資料庫從運行 SQL Server 7.0 的電腦傳輸到運行 SQL Server 7.0 且具有另一定序的電腦,請按照下列步驟操作:
1.備份來源資料庫。
2.使用 SQL Server 企業管理器為來源資料庫中的所有對象建立指令碼。
3.要從資料庫的所有表中匯出資料,請使用 DTS 或 bcp 工具 + 生產力。
4.使用 SQL Server 企業管理器或 CREATE DATABASE 語句在目標伺服器上建立新的資料庫。
注意:當使用 CREATE DATABASE 語句時,資料庫將使用與運行 SQL Server 7.0 的電腦相同的定序。
5.使用 SQL 查詢分析器來運行在步驟 2 中建立的指令碼,以便在目標資料庫中重新建立所有對象。
注意:此表和列將使用與運行 SQL Server 7.0 的電腦相同的定序。
6.使用 DTS 或 bcp 工具 + 生產力將資料匯入到目標表中。
將 SQL Server 7.0 中資料庫的定序轉換為 SQL Server 2000 中的定序
要在 SQL Server 7.0 和 SQL Server 2000 之間更改資料庫的定序,必須在傳輸資料之前,在目標伺服器上使用適當的定序建立資料庫、列或同時建立資料庫和列。但是,在將資料從 SQL Server 7.0 傳輸到 SQL Server 2000 時,可以使用 DTS 刪除並重新建立對象。因此,在執行此操作時,必須在 DTS 中啟用“使用定序”選項。
注意:請不要使用 SQL Server 7.0 中的 DTS 工具 + 生產力與運行 SQL Server 2000 的電腦相互傳輸所有對象。如果必須在 SQL Server 7.0 和 SQL Server 2000 之間傳輸資料,則必須使用 SQL Server 2000 中的 DTS 工具 + 生產力。
要將 SQL Server 7.0 中資料庫的定序轉換為 SQL Server 2000 中的定序,請按照下列步驟操作:
1.備份來源資料庫。
2.使用 SQL Server 企業管理器為來源資料庫中的所有對象建立指令碼。
3.如果列必須使用其他定序,而不使用目標資料庫上的預設定序,請對指令碼中相應列的定序進行必要的更改。
4.使用適當的定序在目標伺服器上建立新的資料庫。
5.使用 SQL 查詢分析器在目標伺服器上運行在步驟 2 中建立的指令碼,以便在資料庫中重新建立所有對象。
注意:新表和列使用與資料庫相同的定序,除非您為這些列指定了其他定序。
6.使用 DTS 或 bcp 工具 + 生產力傳輸資料。
注意:如果使用 DTS,請驗證下列資訊:
◆確保在將資料從 SQL Server 7.0 傳輸到 SQL Server 2000 時啟用了“使用定序”選項。
◆因為已在目標伺服器上使用適當的定序建立了對象,所以要禁用“首先建立目標對象”選項。
在 SQL Server 2000 中轉換資料庫的定序
要在 SQL Server 2000 中轉換資料庫的定序,請按照下列步驟操作:
1.備份來源資料庫。
2.注意所有列是否使用 COLLATE 子句。
3.使用適當的定序在目標伺服器上建立新的資料庫。
4.如果沒有列使用 COLLATE 子句,請使用 DTS 將資料轉送到目標伺服器。為此,請啟用“使用定序”選項以進行字碼頁轉換,並將資料轉換為目標資料庫上的新定序。如果所有列均使用 COLLATE 子句,請按照下列步驟操作:
a.為所有對象(不包括索引、觸發器、主鍵、外鍵、預設設定和約束)產生指令碼。此外,確保啟用了“僅為與 7.0 版相容的功能編寫指令碼”選項,以便從指令碼刪除 COLLATE 子句。
注意:使用“僅為與 7.0 版相容的功能編寫指令碼”選項時,可以更改定序。但是,產生指令碼時將不考慮任何新的 SQL Server 2000 選項(包括使用者定義的函數、擴充屬性、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 2000 中更改 master 資料庫的定序
更改 master 資料庫的定序之前,請按照下列步驟操作:
1.重建 master 資料庫之後,不會自動回復在重建此資料庫之前建立的所有資料庫。因此,所有資料庫必須從備份進行還原,或者如果檔案仍在磁碟上,則可以使用 sp_attach_db 系統預存程序重新附加資料庫。請確保在重建 master 資料庫之前將所有必要的資訊重新附加到現有資料庫。
2.在重建 master 資料庫時,僅更改 master 資料庫、model 資料庫和 msdb 資料庫的定序。不會更改使用者資料庫的定序。要更改現有使用者資料庫的定序或者使用適當的定序建立新的資料庫,請使用 ALTER DATABASE 命令,然後使用 DTS 或 bcp 工具 + 生產力將資料轉送到新的資料庫。
注意:如果在 SQL Server 2000 中使用 ALTER DATABASE 命令來更改資料庫的定序,則表中列的定序將不會自動更改。要更改列的定序,請使用 ALTER TABLE 命令和 ALTER COLUMN 命令。如果使用 DTS,則可以在傳輸資料或使用“使用定序”選項之前,使用適當的定序建立表和列。如果使用的 DTS 和表已經包含適當的定序,請確保在運行軟體包之前禁用了“首先刪除現有對象”選項。
在 SQL Server 7.0 中更改 master 資料庫的定序
更改 master 資料庫的定序之前,請按照下列步驟操作:
1.SQL Server 7.0 不支援資料庫使用除預設定序以外的定序。因此,在重建 master 資料庫之前,請從使用者資料庫中匯出所有資料。
2.為資料庫中的所有對象產生指令碼。
3.使用適當的定序重新建立 master 資料庫。
4.建立新的資料庫。使用新的預設定序自動建立新的資料庫。
5.運行以前儲存的指令碼以重新建立對象,然後匯入以前置出的資料。