2011年1月29日

關於 SQL Server 2000 的定序問題

SQL Server 2000 SP4 的主流支援服務已經在 2008 年 4 月 8 日結束,但依舊還是有人在使用,如果可以,應該是要升級到尚提供支援服務的版本,例如:SQL Server 2008。日前就被人家問到了,關於 SQL Server 2000 定序的相關問題,特將其整理如後。

查詢特定資料庫的定序

使用如下的 T-SQL 語法:
SELECT DATABASEPROPERITYEX('<資料庫名稱>', 'Collation')

指定定序的方式

指定定序的方式有 3 種,第 1 種是在安裝 SQL Server 2000 時,就加以指定,這是所謂的伺服器層級的定序。若習慣使用預設的安裝方式,則肯定是看不到定序的設定選項。

另外 2 種則是在建立資料庫或資料表時,才加以指定,這種是資料庫層級的定序與資料表層級定序。

  1. 伺服器層級的定序
    於安裝 SQL Server 時,選擇「進階選項」(Advanced options)進行安裝,才能出現指定定序的對話視窗
    進階選項
    選擇定序
  2. 資料庫層級定序
    於建立資料庫時,指定所要的定序
    指定定序
  3. 資料表層級定序
    於建立資料表時,指定所要的定序
    指定定序

修改定序

  • 重設伺服器定序,可用 rebuildm.exe。當 master 系統資料庫毀損時,也可用這個工具進行修正。
  • 於建立資料庫或資料表後,修改資料庫或資料表的定序:
    -- 修改資料庫定序為 Chinese_PRC_CI_AS
    ALTER DATABASE AlexChuo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    ALTER DATABASE AlexChuo COLLATE Chinese_PRC_CI_AS;
    ALTER DATABASE AlexChuo SET MULTI_USER;
    
    -- 修改資料表定序為 Chinese_PRC_CI_AS
    ALTER TABLE Mytable ALTER COLUMN 姓名 nvchar(10) COLLATE Chinese_PRC_CS_AI;

    要注意的是,修改資料庫的定序設定,並不會變更該資料庫內既有物件的定序設定。
  • 修改欄位定序比較簡單,只要使用如下的 T-SQL:
    ALTER TABLE <資料表名稱> ALTER COLUMN <欄位名稱> <欄位類型與長度> COLLATE <定序>;

    例如:
    ALTER TABLE 員工 ALTER COLUMN 姓名 nvchar(10) COLLATE Chinese_PRC_CS_AI;

沒有留言:

張貼留言