照合順序の使用 (SQL Server Compact)
照合順序は、特定の言語およびロケールの規範に基づいて文字列データの並べ替えおよび比較を行うための規則を指定します。
SQL Server Compact では Windows 照合順序がサポートされています。SQL Server Compact でサポートされている Windows 照合順序名の一覧については、「サポートされる照合順序 (SQL Server Compact)」を参照してください。
SQL Server Compact 3.5 Service Pack 1 (SP1) リリース以降、SQL Server Compact では、大文字と小文字を区別する照合順序もサポートされるようになりました。大文字と小文字の区別は、データベース レベルで設定されます。つまり、データベース内のユーザー テーブルに含まれるすべての文字列の列 (nchar、nvarchar、および ntext の各データ型の列) で、大文字と小文字の区別に関する設定が、データベース レベルで指定された設定と同じになります。また、文字列の列のインデックスにも、大文字と小文字の区別に関してデータベース レベルで指定された設定と同じ設定が適用されます。
テーブル名などのオブジェクト名、言語キーワード、関数、およびビューは、照合順序では大文字と小文字が区別されても、SQL Server Compact データベースでは大文字と小文字が区別されません。この機能は SQL Server と異なりますが、この動作は、データベースの照合順序がユーザー データの比較に対してのみ使用される SQL 標準の規定に一致しています。
大文字と小文字が区別されるデータベースへの接続
大文字と小文字が区別される SQL Server Compact データベースには、他の SQL Server Compact データベースと同様に接続できます。
SQL Server Compact 3.5 SP1 リリース以降、SQL Server Compact では、データベース照合順序で大文字と小文字を区別するかどうかを指定する Boolean 型の新しい接続文字列プロパティ "Case Sensitive" (または "SSCE:Case Sensitive") がサポートされるようになりました。既存の SQL Server Compact データベースに、接続文字列で "Case Sensitive" プロパティを指定して接続しようとすると、SQL Server Compact 3.5 SP1 ではこの設定が無視されます。つまり、"Case Sensitive" プロパティはデータベース作成時オプションであり、既存のデータベースへの接続時には無視されます。 データベースの作成時に大文字と小文字の区別を指定しなかった場合、既定では大文字と小文字が区別されないデータベースが作成されます。
Case Sensitive プロパティは SQL Server Compact 3.5 SP1 に新たに導入された機能であり、それより前のバージョンではサポートされていません。
大文字と小文字が区別されるデータベースの作成
SQL Server Compact では、API 呼び出しでのみ新しいデータベースの大文字と小文字を区別する照合順序を指定できます。 この機能は、SQL Server Compact 3.5 SP1 以降のバージョンでのみサポートされています。
Boolean 型の新しい接続文字列プロパティ "Case Sensitive" (または "SSCE:Case Sensitive") を使用して、データベース照合順序で大文字と小文字を区別するかどうかを指定できます。ネイティブ プログラミングでは、新しいプロパティ DBPROP_SSCE_DBCASESENSITIVE によって、データベース照合順序で大文字と小文字を区別するかどうかを指定します。このプロパティは、DBPROPSET_SSCE_DBINIT プロパティ セットの一部です。
Case Sensitive を true に設定すると、文字列の列のインデックスがデータベースで再構築されます。
また、CREATE DATABASE (SQL Server Compact) ステートメントの COLLATE (SQL Server Compact) 句を使用しても、新しいデータベースの照合順序を指定できます。ただし、この場合は、CI (大文字と小文字を区別しない) オプションのみがサポートされます。
重要
照合順序で大文字と小文字を区別するデータベースを作成した場合、そのデータベースを以前のリリースの SQL Server Compact (SQL Server Compact 3.5 など) で開くことはできません。
マージ レプリケーションおよび大文字と小文字を区別する照合順序
SQL Server パブリッシャおよび SQL Server Compact サブスクライバでは、大文字と小文字の区別に関する設定に関係なく、マージ レプリケーションがサポートされます。旧バージョンとの互換性をサポートするために、どのシナリオも明示的にブロックされません。
SQL Server Compact 3.5 の SP1 リリースでは、大文字と小文字が区別される SQL Server Compact データベースのレプリケーションが、大文字と小文字が区別されるサーバー データベースと区別されないサーバー データベースの両方に対してサポートされます。次の表に、想定されるすべてのシナリオを示します。
SQL Server Compact クライアント データベースでの大文字と小文字の区別 |
SQL Server データベースでの大文字と小文字の区別 |
サポート |
---|---|---|
CI (大文字と小文字を区別しない) |
CI |
○ |
CI |
CS (大文字と小文字を区別する) |
○ |
CS |
CS |
○ |
CS |
CI |
○ |
マージ レプリケーションの詳細については、「マージ レプリケーションの使用」を参照してください。Replication オブジェクトを使用して大文字と小文字が区別されるデータベースを作成する方法の詳細については、「Replication オブジェクトを使用してデータベースを作成する方法 (プログラム)」を参照してください。