共通のスキーマ コレクション
適用対象: .NET Framework .NET .NET Standard
共通のスキーマ コレクションは、各 .NET マネージド プロバイダーによって実装されるスキーマ コレクションです。 .NET マネージド プロバイダーに対してクエリを実行し、サポートされているスキーマ コレクションの一覧を確認するには、引数を指定せずに、またはスキーマ コレクション名 "MetaDataCollections" を指定して GetSchema
メソッドを呼び出します。 このメソッドは、サポートされているスキーマ コレクションの一覧、それぞれでサポートされる制限の数、および使用される識別子部分の数を含む DataTable を返します。 これらのコレクションは、必要なすべての列を表現します。 プロバイダーは、必要に応じて列を自由に追加できます。 たとえば、Microsoft SqlClient Data Provider for SQL Server の場合は、制限のコレクションに ParameterName
が追加されます。
プロバイダーでは必要な列の値を特定できない場合、null を返します。
GetSchema
メソッドの使用に関する詳細については、「GetSchema およびスキーマ コレクション」を参照してください。
MetaDataCollections
このコレクションは、データベースに接続するために現在使用されているプロバイダーによりサポートされるすべてのスキーマ コレクションに関する情報を公開します。
ColumnName | DataType | 説明 |
---|---|---|
CollectionName | string |
コレクションを返すために GetSchema メソッドに渡すコレクションの名前。 |
NumberOfRestrictions | int |
コレクションに対して指定できる制限の数。 |
NumberOfIdentifierParts | int |
複合識別子部分とデータベース オブジェクト名部分の数。 たとえば、SQL Server では、テーブルの場合は 3、列の場合は 4 になります。 |
DataSourceInformation
このスキーマ コレクションは、Microsoft SqlClient Data Provider for SQL Server が現在接続しているデータ ソースに関する情報を公開します。
ColumnName | DataType | 説明 |
---|---|---|
CompositeIdentifierSeparatorPattern | string |
複合識別子内の複合セパレーターと一致する正規表現。 たとえば、\. (SQL Server の場合)。複合識別子は、通常、データベース オブジェクト名で使用されます。たとえば、 pubs.dbo.authors または pubs@dbo.authors のようになります。SQL Server の場合、 \. という正規表現を使用します。 |
DataSourceProductName | string |
プロバイダーがアクセスする製品名 ("SQLServer" など)。 |
DataSourceProductVersion | string |
プロバイダーによりアクセスされる製品のバージョンを、Microsoft の形式ではなく、データ ソースのネイティブ形式で表します。 場合によっては、 DataSourceProductVersion と DataSourceProductVersionNormalized が同じ値になります。 |
DataSourceProductVersionNormalized | string |
String.Compare() を使用して比較できるような、データ ソースの正規化されたバージョン。 この形式は、バージョン 10 がバージョン 1 とバージョン 2 の間で並べ替えられるのを防ぐために、プロバイダーのすべてのバージョンで一貫しています。たとえば、SQL Server では、一般的な Microsoft 形式である nn.nn.nnnn が使用されます。場合によっては、 DataSourceProductVersion と DataSourceProductVersionNormalized が同じ値になります。 |
GroupByBehavior | GroupByBehavior | GROUP BY 句の列と SELECT リストの集計以外の列間のリレーションシップを指定します。 |
IdentifierPattern | string |
識別子と一致し、その識別子の一致した値がある正規表現。 たとえば、「 [A-Za-z0-9_#$] 」のように入力します。 |
IdentifierCase | IdentifierCase | 引用符で囲まれていない識別子が、大文字と小文字を区別して扱われるかどうかを示します。 |
OrderByColumnsInSelect | bool |
ORDER BY 句の列が SELECT リストになければならないかどうかを示します。 値が true の場合は、選択リストに含む必要があります。 値が false の場合は、選択リストに含む必要はありません。 |
ParameterMarkerFormat | string |
パラメーターを書式設定する方法を表す書式文字列。 名前付きパラメーターがデータ ソースでサポートされている場合、この文字列内の最初のプレースホルダーは、パラメーター名が書式設定される場所である必要があります。 たとえば、データ ソースが名前に : というプレフィックスが付いたパラメーターを要求している場合、この文字列は :{0} になります。 このパラメーターを p1 の名前で書式設定すると、結果の文字列は :p1 になります。データ ソースが @ というプレフィックスが付いたパラメーターを要求しているが、既に名前に含まれている場合、この文字列は {0} になります。@p1 というパラメーターを書式設定した結果は、@p1 になります。名前付きパラメーターを要求せず、 ? 文字の使用を要求するデータ ソースの場合、書式文字列は、パラメーター名を無視する ? として指定できます。 |
ParameterMarkerPattern | string |
パラメーター マーカーと一致する正規表現。 パラメーター名の一致する値になります (一致する値がある場合)。 たとえば、パラメーター名に @ という前置文字が含まれている、名前付きパラメーターがサポートされている場合、このパターンは (\@[A-Za-z0-9_$#]*) となります。ただし、前置文字として : が付いた名前付きパラメーターがサポートされていて、それがパラメーター名の一部になっていない場合、このパターンは :([A-Za-z0-9_$#]\*) となります。データ ソースが名前付きパラメーターをサポートしない場合、このパターンは ? になります。 |
ParameterNameMaxLength | int |
パラメーター名の文字の最大長。 Visual Studio では、パラメーター名がサポートされている場合、最大長の最小値が 30 文字であることを想定しています。 データ ソースが名前付きパラメーターをサポートしない場合、このパターンはゼロを返します。 |
ParameterNamePattern | string |
有効なパラメーター名と一致する正規表現。 データ ソースによって、パラメーター名に使用できる文字に関する規則が異なります。 Visual Studio は、パラメーター名がサポートされている場合、文字 \p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd} が、パラメーター名に対して有効な最小限サポートされる文字セットである必要があります。 |
QuotedIdentifierPattern | string |
引用符で囲まれた識別子と一致し、引用符を除いた識別子自体の一致する値のある正規表現。 たとえば、データ ソースが引用符で囲まれた識別子を識別するために、二重引用符を使用した場合、このパターンは (([^\\"]\|\\"\\")*) になります。 |
QuotedIdentifierCase | IdentifierCase | 引用符で囲まれた識別子が、大文字と小文字を区別して扱われるかどうかを示します。 |
StatementSeparatorPattern | string |
ステートメント区切り文字と一致する正規表現。 |
StringLiteralPattern | string |
文字列リテラルと一致し、リテラル自体の一致する値のある正規表現。 たとえば、データ ソースが文字列を識別するために単一引用符を使用した場合、このパターンは ('([^']\|'')*') になります。 |
SupportedJoinOperators | SupportedJoinOperators | データ ソースでサポートされる SQL の JOIN ステートメントの種類を指定します。 |
DataTypes
このスキーマ コレクションは、プロバイダーが現在接続されているデータベースでサポートされているデータ型に関する情報を公開します。
ColumnName | DataType | 説明 |
---|---|---|
TypeName | string |
プロバイダー固有のデータ型の名前。 |
ProviderDbType | int |
パラメーターの型を指定するときに使用する必要のある、プロバイダー固有の型の値。 たとえば、「 SqlDbType.Money 」のように入力します。 |
ColumnSize | long |
数値以外の列またはパラメーターの長さ。 この値は、プロバイダーによってこの型に定義される最大または長さを示します。 文字データの場合、この値は、データ ソースによって定義された単位での最大または定義された長さです。 日時データ型の場合、この値は文字列表記の長さです (秒部分に許容される最大有効桁数を想定)。 データ型が数値の場合、この値はデータ型の有効桁数の上限値です。 |
CreateFormat | string |
CREATE TABLE などのデータ定義ステートメントに、この列を追加する方法を示す書式文字列。 CreateParameter 配列の各要素は、書式文字列内で "パラメーター マーカー" で表される必要があります。たとえば、SQL データ型の DECIMAL には Precision と Scale が必要です。 この場合、書式文字列は DECIMAL({0},{1}) になります。 |
CreateParameters | string |
このデータ型の列を作成する場合に指定する必要のある作成パラメーター。 各作成パラメーターは、指定する順序でコンマで区切って、文字列に一覧表示されます。 たとえば、SQL データ型の DECIMAL には Precision と Scale が必要です。 この場合、作成パラメーターには、"precision, scale" という文字列が含まれる必要があります。 precision を 10、scale を 2 として DECIMAL 列を作成するためのテキスト コマンド内では、CreateFormat 列の値は DECIMAL({0},{1}) になり、完全な型指定は DECIMAL(10,2) になります。 |
DataType | string |
データ型の .NET 型の名前。 |
IsAutoincrementable | bool |
true - このデータ型の値は、自動インクリメントされる場合があります。false - このデータ型の値は、自動インクリメントされません。このプロパティは、このデータ型の列が自動インクリメントされる場合があるかどうかを示すにすぎません。このデータ型のすべての列が自動インクリメントされるわけではありません。 |
IsBestMatch | bool |
true - データ型は、データ ストア内のすべてのデータ型と DataType 列の値で示される .NET データ型の間で最も一致するものです。false - データ型が最適な一致ではありません。IsBestMatch 列が true に設定されるのは、DataType の値が同じである行のセットごとに 1 行のみです。 |
IsCaseSensitive | bool |
true - データ型が文字型であり、大文字と小文字が区別されます。false - データ型が文字型ではないか、大文字と小文字が区別されません。 |
IsFixedLength | bool |
true - データ定義言語 (DDL) で作成されたこのデータ型の列は固定長になります。false - DDL で作成されたこのデータ型の列は可変長になります。DBNull.Value - プロバイダーがこのフィールドを固定長の列でマップするか可変長の列でマップするかが不明です。 |
IsFixedPrecisionScale | bool |
true - データ型の有効桁数と小数点以下桁数が固定しています。false - データ型の有効桁数と小数点以下桁数が固定していません。 |
IsLong | bool |
true - データ型に非常に長いデータが含まれています。非常に長いデータの定義は、プロバイダーによって異なります。false - データ型に非常に長いデータは含まれていません。 |
IsNullable | bool |
true - データ型は Null 許容です。false - データ型は Null 許容ではありません。DBNull.Value - データ型が Null 許容かどうかが不明です。 |
IsSearchable | bool |
true - データ型は、LIKE 述語を除き、任意の演算子を使用して WHERE 句で使用できます。false - データ型は、LIKE 述語を除き、任意の演算子を使用して WHERE 句で使用できません。 |
IsSearchableWithLike | bool |
true - データ型は LIKE 述語と一緒に使用できます。false - データ型は LIKE 述語と一緒に使用できません。 |
IsUnsigned | bool |
true - データ型は符号なしです。false - データ型に符号があります。DBNull.Value - データ型には適用されません。 |
MaximumScale | short |
型インジケーターが数値型である場合、この値は小数点以下で許容される最大桁数です。 それ以外の場合、この値は DBNull.Value になります。 |
MinimumScale | short |
型インジケーターが数値型である場合、この値は小数点以下で許容される最小桁数です。 それ以外の場合、この値は DBNull.Value になります。 |
IsConcurrencyType | bool |
true – データ型は、行が変更され、列の値が以前のすべての値と異なるたび、データベースによって更新されます。false – 行が変更されても、データベースによってデータ型が更新されません。DBNull.Value – データベースでは、このデータ型はサポートされていません。 |
IsLiteralSupported | bool |
true – データ型はリテラルとして表現できます。false – データ型はリテラルとして表現できません。 |
LiteralPrefix | string |
指定されたリテラルに適用されるプレフィックス。 |
LiteralSuffix | string |
指定されたリテラルに適用されるサフィックス。 |
制限
このスキーマ コレクションは、データベースへの接続に現在使用されているプロバイダーでサポートされる制限に関する情報を公開します。
ColumnName | DataType | 説明 |
---|---|---|
CollectionName | string |
これらの制限を適用するコレクションの名前。 |
RestrictionName | string |
コレクション内の制限の名前。 |
RestrictionDefault | string |
無視されます。 |
RestrictionNumber | int |
この特定の制限が収まっているコレクションの制限内の実際の位置。 |
ReservedWords
このスキーマ コレクションは、プロバイダーが現在接続しているデータベースにより予約されている単語に関する情報を公開します。
ColumnName | DataType | 説明 |
---|---|---|
ReservedWord | string |
プロバイダー固有の予約語。 |