Retrieving Schema Metadata with the GetSchema Method
- Last Updated: April 16, 2026
- 6 minute read
- ADO.NET
- Documentation
Applications use the GetSchema method of the Connection object to retrieve Schema Metadata about a data provider and/or data source. Each provider implements a number of Schema collections, including the five standard metadata collections:
- MetaDataCollections Schema Collections
- DataSourceInformation Schema Collection
- DataTypes Collection
- ReservedWords Collection
- Restrictions Collection
Additional collections are specified and must be supported to return Schema information from the data provider.
See Additional Schema Metadata Collections for details about the other collections supported by the data providers.
Note: Refer to the .NET Framework documentation for additional background functional requirements, including the required data type for each ColumnName.
MetaDataCollections Schema Collections
The MetaDataCollections schema collection is a list of the schema collections that are available to the logged in user. The MetaDataCollection can return the supported columns described in the following table in any order.
Columns Returned by the MetaDataCollections Schema Collection
| ColumnName | Description |
| CollectionName | The name of the collection to pass to the GetSchema method to return the collection |
| NumberOfRestrictions | The number of restrictions that may be specified for the collection |
| NumberOfIdentifierParts | The number of parts in the composite identifier/data base object name |
DataSourceInformation Schema Collection
The DataSourceInformation schema collection can return the supported columns, described in the following table, in any order.
Columns Returned by the DataSourceInformation Collection
| ColumnName | Description |
| CompositeIdentifierSeparatorPattern | The regular expression to match the composite separators in a composite identifier. |
| DataSourceProductName | The name of the product accessed by the data provider. |
| DataSourceProductVersion | The version of the product accessed by the data provider, in the data source’s native format. |
| DataSourceProductVersionNormalized | A normalized version for the data source. This allows the version to be compared with String.Compare(). |
| DefaultSchema | The default schema in which data source interaction operates if a schema is not specified. |
| GroupByBehavior | Specifies the relationship between the columns in a GROUP BY clause and the non-aggregated columns in the select list. |
| Host | The host to which the data provider is connected. |
| IdentifierCase | Indicates whether non-quoted identifiers are treated as case sensitive. |
| IdentifierPattern | A regular expression that matches an identifier and has a match value of the identifier. |
| OrderByColumnsInSelect | Specifies whether columns in an ORDER BY clause must be in the select list. A value of true indicates that they are required to be in the Select list, a value of false indicates that they are not required to be in the Select list. |
| ParameterMarkerFormat | A format string that represents how to format a parameter. |
| ParameterMarkerPattern | A regular expression that matches a parameter marker. It will have a match value of the parameter name, if any. |
| ParameterNameMaxLength | The maximum length of a parameter name in characters. |
| ParameterNamePattern | A regular expression that matches the valid parameter names. |
| QuotedIdentifierCase | Indicates whether quoted identifiers are treated as case sensitive. |
| QuotedIdentifierPattern | A regular expression that matches a quoted identifier and has a match value of the identifier itself without the quotation marks. |
| StatementSeparatorPattern | A regular expression that matches the statement separator. |
| StringLiteralPattern | A regular expression that matches a string literal and has a match value of the literal itself. |
| SupportedJoinOperators | Specifies the types of SQL join statements that are supported by the data source. |
| SupportsReauthentication | Specifies whether the data source supports reauthentication. |
The following table lists the provider-specific ColumnNames:
Provider-specific ColumnNames
| Data Provider | ColumnName | Description |
| Oracle | SID | SID of the data source1 |
| Oracle | ServiceName | Service name from the tnsnames.ora file |
| SQL Server | NameInstance | An instance of SQL Server running on a host |
1 SID and ServiceName are mutually exclusive in a connection string or data source.
DataTypes Collection
The following table describes the supported columns of the DataTypes schema collection. The columns can be returned in any order.
ColumnNames Returned by the DataTypes Collection
| ColumnName | Description |
| ColumnSize | The length of a non-numeric column or parameter; refers to either the maximum or the length defined for this type by the data provider. |
| CreateFormat | Format string that represents how to add this column to a data definition statement, such as CREATE TABLE. |
| CreateParameters | The creation parameters that must be specified when creating a column of this data type. Each creation parameter is listed in the string, separated by a comma in the order they are to be supplied. For example, the SQL data type DECIMAL needs a precision and a scale. In this case, the creation parameters should contain the string "precision, scale". In a text command to create a DECIMAL column with a precision of 10 and a scale of 2, the value of the CreateFormat column might be DECIMAL({0},{1})" and the complete type specification would be DECIMAL(10,2). |
| DataType | The name of the .NET Framework type of the data type. |
| IsAutoIncrementable | Specifies whether values of a data type are auto-incremented. true: Values of this data type may be auto-incremented. false: Values of this data type may not be auto-incremented. |
| IsBestMatch | Specifies whether the data type is the best match between all data types in the data store and the .NET Framework data type that is indicated by the value in the DataType column. true: The data type is the best match. false: The data type is not the best match. |
| IsCaseSensitive | Specifies whether the data type is both a character type and case-sensitive. true: The data type is a character type and is case-sensitive. false: The data type is not a character type or is not case-sensitive. |
| IsConcurrencyType | true: The data type is updated by the database every time the row is changed and the value of the column is different from all previous values. false: The data type is not updated by the database every time the row is changed. |
| IsFixedLength | true: Columns of this data type created by the data definition language (DDL) will be of fixed length. false: Columns of this data type created by the DDL will be of variable length. |
| IsFixedPrecisionScale | true: The data type has a fixed precision and scale. false: The data type does not have a fixed precision and scale. |
| IsLiteralsSupported | true: The data type can be expressed as a literal. false: The data type cannot be expressed as a literal. |
| IsLong | true: The data type contains very long data. The definition of very long data is provider-specific. false: The data type does not contain very long data. |
| IsNullable | true: The data type is nullable. false: The data type is not nullable. |
| IsSearchable | true: The data type contains very long data. The definition of very long data is provider-specific. false: The data type does not contain very long data. |
| IsSearchableWithLike | true: The data type can be used with the LIKE predicate. false: The data type cannot be used with the LIKE predicate. |
| IsUnisgned | true: The data type is unsigned. false: The data type is signed. |
| LiteralPrefix | The prefix applied to a given literal. |
| LiteralSuffix | The suffix applied to a given literal. |
| MaximumScale | If the type indicator is a numeric type, this is the maximum number of digits allowed to the right of the decimal point. Otherwise, this is DBNull.Value. |
| NativeDataType | An OLE DB-specific column for exposing the OLE DB type of the data type. |
| ProviderDbType | The provider-specific type value that should be used when specifying a parameter's type. |
| TypeName | The provider-specific data type name. |
ReservedWords Collection
This schema collection exposes information about the words that are reserved by the database to which the data provider is connected. The following table describes the columns that the data provider supports.
ReservedWords Schema Collection
| ColumnName | Description |
| Reserved Word | Provider-specific reserved words |
Restrictions Collection
The Restrictions schema collection exposes information about the restrictions that are supported by the data provider that is currently connected to the database. The following table describes the columns that are returned by the data providers. The columns can be returned in any order.
DataDirect Connect for ADO.NET data providers use standardized names for restrictions. If a data provider supports a restriction for a Schema method, it always uses the same name for the restriction.
The case sensitivity of any restriction value is determined by the underlying database, and can be determined by the IdentifierCase and QuotedIdentifierCase values in the DataSourceInformation collection (see "DataSourceInformation Schema Collection").
ColumnNames Returned by the Restrictions Collection
| ColumnName | Description |
| CollectionName | The name of the collection to which the specified restrictions apply |
| RestrictionName | The name of the restriction in the collection |
| RestrictionDefault | Ignored |
| RestrictionNumber | The actual location in the collection restrictions for this restriction |
| IsRequired | Specifies whether the restriction is required |