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;

2011年1月17日

於安裝 SQL Server 2005/2008 或套用 Service Pack 時,遇到檢查「重新啟動電腦」規則失敗

於安裝 SQL Server 2005/2008 或套用 Service Pack 時,會檢查相關的規則,遇到檢查「重新啟動電腦」規則失敗的訊息:

即便重新開機,再次執行 SQL Server 安裝程式或套用 Service Pack,同樣的訊息依舊存在。

之所以會發生此種問題,是因為以前執行過其他軟體的安裝程式,而該軟體建立了擱置檔案作業,因此在執行或套用 SQL Server 安裝程式與 Service Pack 之前,必須重新啟動電腦才行。

如果重新啟動電腦之後,嘗試再安裝一次,還是出現同樣的錯誤訊息,就表示我們要手動刪除擱置檔案作業:

  1. 關閉安裝程式。
  2. 找出以下機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
  3. 在右側窗格中的 PendingFileRenameOperations 上,連按兩下滑鼠左鍵,選取所有的內容,將其刪除。
  4. 再執行安裝程式。