設定或變更伺服器定序

適用于: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實例的預設定序可能是複雜的作業。

注意

您可以針對透過 和 ALTER DATABASE 語句的 子句 CREATE DATABASE 所建立 COLLATE 的每個新資料庫指定預設定序,而不是變更SQL Server實例的預設定序。 如需詳細資訊,請參閱 設定或變更資料庫定序

變更實例定序牽涉到下列步驟:

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

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

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

  • master安裝程式命令的 SQLCOLLATION 屬性中,重建指定新定序的資料庫。 例如:

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

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

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

  • 匯入所有資料。

設定受控執行個體中的伺服器定序

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

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

下一步