分散式查詢中的定序
SQL Server 支援多個定序。每個資料行都可以有不同的定序,而且每個字元值都有關聯的定序屬性。SQL Server 會解譯從遠端資料來源而來的字元資料之定序屬性並加以處理它。
SQL Server 將使用遠端資料的定序來處理 Unicode 與非 Unicode 字元資料的比較與排序作業。遠端字元資料的定序資訊將取決於資料來源是否對應至 SQL Server 的執行個體:
Microsoft SQL Server Native Client OLE DB Provider 將自動報告提供者所傳回之每個資料行的定序。
對於未在 SQL Server 中的遠端資料表,但已知其定序和 SQL Server 所支援的某個定序相同,系統管理員可將 OLE DB 資料來源的預設定序指定成連結伺服器定義的一部份。SQL Server 接著可使用預設的定序做為從連結伺服器傳回的所有資料行之定序。
當 SQL Server 決定了遠端字元資料行的定序之後,SQL Server 將遵循本機資料行的轉換、比較與操作規則,運作於遠端資料表資料行上。如需有關 SQL Server 套用至定序的規則,以及 SQL Server 所支援定序名稱的詳細資訊,請參閱<使用定序>。
如果預設遠端資料庫的定序與目前本機資料庫的定序不同,會將遠端字串視為 Unicode。若要確保所有的遠端伺服器都能以一致的方式處理字串,請執行下列動作:
使用 Unicode 格式 N**'string'** 在分散式查詢中指定字串常值。
定義包含明確目標資料庫的連結伺服器,而不是使用預設的遠端資料庫。此資料庫可能有不同的定序。
定義連結的伺服器選項
下列使用 sp_serveroption 所定義的連結伺服器選項,控制了 SQL Server 是否可以使用連結伺服器的定序以及其使用方式:
use remote collation 選項指定了是否使用遠端資料行或本機伺服器的定序。如果為 true,針對 SQL Server 資料來源會使用遠端資料行的定序,而針對非 SQL Server 資料來源會使用 collation name 中所指定的定序。若為 false,分散式查詢一定會使用本機伺服器執行個體的預設定序,而 collation name 與遠端資料行的定序則會被忽略。
如果 use remote collation 為 true,而且資料來源不是 SQL Server 資料來源,collation name 選項可以指定遠端資料來源所使用的定序名稱。名稱必須為 SQL Server 所支援的定序之一。存取 SQL Server 之外的 OLE DB 資料來源,但其定序符合 SQL Server 定序之一時,請使用此選項。SQL Server 資料來源會報告它們的資料行定序,但忽略參考 SQL Server 資料來源之連結伺服器的定序名稱。
[!附註]
使用連結的伺服器選項是使用遠端定序的唯一方法。因此,使用 OPENROWSET 與 OPENDATASOURCE 提供的特定名稱所建構的查詢,無法使用遠端字元資料的定序資訊。除此之外,所有已升級至 SQL Server 2000 或更新版本的 SQL Server 7.0 版中之所有連結伺服器,都會設定為 use remote collation=false。
選項設定的摘要
下表摘要當 use remote collation 設定為 true (或 on) 時,SQL Server 如何決定針對每個資料行所使用的定序。
連結伺服器類型 |
未設定定序名稱 |
已設定定序名稱 (設為 CollX) |
---|---|---|
SQL Server |
遠端資料行的實際定序。 |
遠端資料行的實際定序。 |
其他 |
SQL Server 之本機執行個體的預設定序。 |
CollX |
下表摘要當 use remote collation 設定為 false (或 off) 時,SQL Server 如何決定針對每個資料行所使用的定序。
連結伺服器類型 |
未設定定序名稱 |
已設定定序名稱 (設為 CollX) |
---|---|---|
SQL Server |
SQL Server 之本機執行個體的預設定序。 |
SQL Server 之本機執行個體的預設定序。 |
其他 |
SQL Server 之本機執行個體的預設定序。 |
SQL Server 之本機執行個體的預設定序。 |