設定或變更伺服器定序

適用於:SQL ServerAzure SQL 受控執行個體

對於與 SQL Server 執行個體一起安裝的所有系統資料庫,以及任何新建的使用者資料庫而言,伺服器定序會當作預設定序。

您應該仔細考慮伺服器層級定序,因其可能影響:

  • =JOINORDER BY 及比較文字資料之其他運算子的排序和比較規則。
  • 系統檢視表中 CHARVARCHARNCHARNVARCHAR 資料行以及系統函式和 tempdb (例如暫存資料表) 中物件的定序。
  • 變數、資料指標和 GOTO 標籤的名稱。 例如,如果伺服器層級定序區分大小寫,變數 @pi@PI 會視為不同的變數;如果伺服器層級定序不區分大小寫,則會視為相同的變數。

SQL Server 中的伺服器定序

伺服器定序是在 SQL Server 安裝期間指定。 預設伺服器層級定序是以作業系統的地區設定為基礎。

例如,使用美式英文 (en-US) 系統的預設定序是 SQL_Latin1_General_CP1_CI_AS。 如需詳細資訊,包括 OS 地區設定對應到預設定序的清單,請參閱定序和 Unicode 支援的<伺服器層級定序>區段。

注意

SQL Server Express LocalDB 的伺服器層級定序是 SQL_Latin1_General_CP1_CI_AS,且在安裝期間和安裝後皆無法變更。

變更 SQL Server 中的伺服器定序

變更 SQL Server 執行個體的預設定序是相當複雜的作業。

注意

您可以針對透過 CREATE DATABASEALTER DATABASE 陳述式的 COLLATE 子句建立的每個新資料庫指定預設定序,而不用變更 SQL Server 執行個體的預設定序。 如需詳細資訊,請參閱 設定或變更資料庫定序

變更執行個體定序涉及下列步驟:

  • 確定已備妥重新建立使用者資料庫以及所有內含物件所需的所有資訊或指令碼。

  • 使用 bcp Utility這類工具來匯出所有資料。 如需詳細資訊,請參閱資料的大量匯入及匯出 (SQL Server)

  • 卸除所有使用者資料庫。

  • 重建 master 資料庫,在 setup 命令的 SQLCOLLATION 屬性中指定新定序。 例如:

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
    /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ]
    /SQLCOLLATION=CollationName  
    

    如需詳細資訊,請參閱 重建系統資料庫

  • 建立所有資料庫以及所有內含物件。

  • 匯入所有資料。

在 Azure SQL 受控執行個體中設定伺服器定序

建立 Azure SQL 受控執行個體時,可指定執行個體中的伺服器層級定序,且稍後無法變更。 您可以在建立執行個體時,透過 Azure 入口網站PowerShell 和 Resource Manager 範本來設定伺服器層級定序。 預設伺服器層級定序為 SQL_Latin1_General_CP1_CI_AS

如果您將資料庫從 SQL Server 移轉至 Azure SQL 受控執行個體,請使用 SERVERPROPERTY(N'Collation') 函式來檢查來源 SQL Server 中的伺服器定序,並建立符合您 SQL Server 定序的受控執行個體。 將資料庫從 SQL Server 移轉至伺服器層級定序不相符的 SQL 受控執行個體,可能會導致查詢中出現數個未預期的錯誤。 無法變更現有受控執行個體上的伺服器層級定序。

Azure SQL 資料庫中的定序

無法在 Azure SQL 資料庫上變更或設定邏輯伺服器定序,但可以同時設定資料和目錄的每個資料庫的定序。 目錄定序會決定系統中繼資料的定序,例如物件識別碼。 當您在 Azure 入口網站、T-SQL (使用 CREATE DATABASE)、PowerShell (使用 New-AzSqlDatabase) 中建立資料庫時,可單獨指定這兩個定序。