分散クエリの照合順序
SQL Server では、複数の照合順序がサポートされます。列ごとに異なる照合順序を設定できます。また、各文字値には関連する照合順序プロパティがあります。SQL Server は、リモート データ ソースからの文字データの照合順序プロパティを解釈し、それに応じて文字データを処理します。
SQL Server は、Unicode または非 Unicode の文字データに関する比較と順序付け操作に、リモート データの照合順序を使用します。リモート文字データの照合順序情報は、データ ソースが SQL Server のインスタンスに対応しているかどうかで、次のように異なります。
Microsoft SQL Server Native Client OLE DB プロバイダは、プロバイダが返す列ごとに照合順序を自動的に報告します。
SQL Server には存在しなくても、SQL Server がサポートする照合順序の 1 つと照合順序が同じだとわかっているリモート テーブルの場合、管理者は OLE DB データ ソースの既定の照合順序をリンク サーバー定義の一部として指定できます。これにより 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 の照合順序の 1 つと一致する場合に使用します。SQL Server データ ソースから列の照合順序が報告され、SQL Server データ ソースを参照するリンク サーバーの collation name は無視されます。
注 リモートの照合順序の使用を有効にする唯一の方法は、リンク サーバー オプションを使用することです。したがって、OPENROWSET と OPENDATASOURCE で指定されたアドホック名を使用するように構築されたクエリでは、リモート文字データの照合情報を使用できません。また、SQL Server 2000 以降にアップグレードされた SQL Server Version 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 のローカル インスタンスの既定の照合順序 |