The connection object of ActiveX Data Object component can also be used to obtain
the database schema information of a data source.
ConnectionObect.OpenSchema method for connection object is a method
used to retrieve the database schema information of a specified data source through the specified object instance
from the provider. The
information obtained by the
ConnectionObect.OpenSchema method is a Recordset object containing the secified
schema information.
Set RecordsetObjectName = ConnectionObjectName.OpenSchema(QueryType,
Criteria, SchemaID);
Or in VBScript. Imply
Set RecordsetObjectName = ConnectionObjectName.OpenSchema(QueryType,
Criteria, SchemaID)
Or in JScript. Imply
Set RecordsetObjectName = ConnectionObjectName.OpenSchema(QueryType,
Criteria, SchemaID);
The parameter "RecordsetObjectName" is the name assigned to the instance of
the Recordset object created by the call using the ConnectionObjectName.OpenSchema
method.
The parameter "ConnectionObjectName" is used to specify the name of the instance
of the Connection Object related to.
The parameter "QueryType" is used to specify the
SchemaEnum value that represents the type of schema query to run. The possible
values of parameter "QueryType " can be
Constant |
Value |
Description |
Constraint Columns |
adSchemaAsserts |
0 |
Returns the assertions defined in the catalog that are owned by a given user.
(ASSERTIONS Rowset) |
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME |
adSchemaCatalogs |
1 |
Returns the physical attributes associated with catalogs accessible from the
DBMS. (CATALOGS Rowset) |
CATALOG_NAME |
adSchemaCharacterSets |
2 |
Returns the character sets defined in the catalog that are accessible to a given
user. (CHARACTER_SETS Rowset) |
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME |
adSchemaCheckConstraints |
5 |
Returns the check constraints defined in the catalog that are owned by a given
user. (CHECK_CONSTRAINTS) Rowset) |
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME |
adSchemaCollations |
3 |
Returns the character collations defined in the catalog that are accessible to a
given user. (COLLATIONS Rowset) |
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME |
adSchemaColumnPrivileges |
13 |
Returns the privileges on columns of tables defined in the catalog that are
available to, or granted by, a given user. (COLUMN_PRIVILEGES Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME GRANTOR
GRANTEE |
adSchemaColumns |
4 |
Returns the columns of tables (including views) defined in the catalog that are
accessible to a given user. (COLUMNS Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME |
adSchemaColumnsDomainUsage |
11 |
Returns the columns defined in the catalog that are dependent on a domain
defined in the catalog and owned by a given user. (COLUMN_DOMAIN_USAGE Rowset) |
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
COLUMN_NAME |
adSchemaConstraintColumnUsage |
6 |
Returns the columns used by referential constraints, unique constraints, check
constraints, and assertions, defined in the catalog and owned by a given user.
(CONSTRAINT_COLUMN_USAGE Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME |
adSchemaConstraintTableUsage |
7 |
Returns the tables that are used by referential constraints, unique constraints,
check constraints, and assertions defined in the catalog and owned by a given
user. (CONSTRAINT_TABLE_USAGE Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME |
adSchemaCubes |
32 |
Returns information about the available cubes in a schema (or the catalog, if
the provider does not support schemas). (CUBES Rowset*) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME |
adSchemaDBInfoKeywords |
30 |
Returns a list of provider-specific keywords. (IDBInfo::GetKeywords) |
|
adSchemaDBInfoLiterals |
31 |
Returns a list of provider-specific literals used in text commands.
(IDBInfo::GetLiteralInfo) |
<None>
|
adSchemaDimensions |
33 |
Returns information about the dimensions in a given cube. It has one row for
each dimension. (DIMENSIONS Rowset) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_NAME
DIMENSION_UNIQUE_NAME |
adSchemaForeignKeys |
27 |
Returns the foreign key columns defined in the catalog by a given user.
(FOREIGN_KEYS Rowset) |
PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME
FK_TABLE_CATALOG
FK_TABLE_SCHEMA
FK_TABLE_NAME |
adSchemaHierarchies |
34 |
Returns information about the hierarchies available in a dimension. (HIERARCHIES
Rowset) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_NAME
HIERARCHY_UNIQUE_NAME |
adSchemaIndexes |
12 |
Returns the indexes defined in the catalog that are owned by a given user.
(INDEXES Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
INDEX_NAME TYPE
TABLE_NAME |
adSchemaKeyColumnUsage |
8 |
Returns the columns defined in the catalog that are constrained as keys by a
given user. (KEY_COLUMN_USAGE Rowset) |
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME |
adSchemaLevels |
35 |
Returns information about the levels available in a dimension. (LEVELS Rowset) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME
LEVEL_NAME
LEVEL_UNIQUE_NAME |
adSchemaMeasures |
36 |
Returns information about the available measures. (MEASURES Rowset) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
MEASURE_NAME
MEASURE_UNIQUE_NAME |
adSchemaMembers |
38 |
Returns information about the available members. (MEMBERS Rowset) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME
LEVEL_UNIQUE_NAME
LEVEL_NUMBER
MEMBER_NAME
MEMBER_UNIQUE_NAME
MEMBER_CAPTION
MEMBER_TYPE Tree Operator. |
adSchemaPrimaryKeys |
28 |
Returns the primary key columns defined in the catalog by a given user.
(PRIMARY_KEYS Rowset) |
PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME |
adSchemaProcedureColumns |
29 |
Returns information about the columns of rowsets returned by procedures.
(PROCEDURE_COLUMNS Rowset) |
PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
COLUMN_NAME |
adSchemaProcedureParameters |
26 |
Returns information about the parameters and return codes of procedures.
(PROCEDURE_PARAMETERS Rowset) |
PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PARAMETER_NAME |
adSchemaProcedures |
16 |
Returns the procedures defined in the catalog that are owned by a given user.
(PROCEDURES Rowset) |
PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PROCEDURE_TYPE |
adSchemaProperties |
37 |
Returns information about the available properties for each level of the
dimension. (PROPERTIES Rowset) |
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME
LEVEL_UNIQUE_NAME
MEMBER_UNIQUE_NAME
PROPERTY_TYPE
PROPERTY_NAME |
adSchemaProviderSpecific |
-1 |
Used if the provider defines its own nonstandard schema queries. |
<Provider specific> |
adSchemaProviderTypes |
22 |
Returns the (base) data types supported by the data provider. (PROVIDER_TYPES
Rowset) |
DATA_TYPE BEST_MATCH |
AdSchemaReferentialConstraints |
9 |
Returns the referential constraints defined in the catalog that are owned by a
given user. (REFERENTIAL_CONSTRAINTS Rowset) |
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME |
adSchemaSchemata |
17 |
Returns the schemas (database objects) that are owned by a given user. (SCHEMATA
Rowset) |
CATALOG_NAME
SCHEMA_NAME
SCHEMA_OWNER |
adSchemaSQLLanguages |
18 |
Returns the conformance levels, options, and dialects supported by the
SQL-implementation processing data defined in the catalog. (SQL_LANGUAGES
Rowset) |
<None>
|
adSchemaStatistics |
19 |
Returns the statistics defined in the catalog that are owned by a given user.
(STATISTICS Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME |
adSchemaTableConstraints |
10 |
Returns the table constraints defined in the catalog that are owned by a given
user. (TABLE_CONSTRAINTS Rowset) |
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE |
adSchemaTablePrivileges |
14 |
Returns the privileges on tables defined in the catalog that are available to,
or granted by, a given user. (TABLE_PRIVILEGES Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME GRANTOR
GRANTEE |
adSchemaTables |
20 |
Returns the tables (including views) defined in the catalog that are accessible
to a given user. (TABLES Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME TABLE_TYPE |
adSchemaTranslations |
21 |
Returns the character translations defined in the catalog that are accessible to
a given user. (TRANSLATIONS Rowset) |
TRANSLATION_CATALOG
TRANSLATION_SCHEMA
TRANSLATION_NAME |
adSchemaTrustees |
39 |
Reserved for future use. |
|
adSchemaUsagePrivileges |
15 |
Returns the USAGE privileges on objects defined in the catalog that are
available to, or granted by, a given user. (USAGE_PRIVILEGES Rowset) |
OBJECT_CATALOG
OBJECT_SCHEMA
OBJECT_NAME
OBJECT_TYPE GRANTOR
GRANTEE |
adSchemaViewColumnUsage |
24 |
Returns the columns on which viewed tables, defined in the catalog and owned by
a given user, are dependent. (VIEW_COLUMN_USAGE Rowset) |
VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME |
adSchemaViews |
23 |
Returns the views defined in the catalog that are accessible to a given user.
(VIEWS Rowset) |
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME |
adSchemaViewTableUsage |
25 |
Returns the tables on which viewed tables, defined in the catalog and owned by a
given user, are dependent. (VIEW_TABLE_USAGE Rowset) |
VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME |
The optional parameter "Criteria" is an
array of query constraints used to specify the criteria for the QueryType
accordingly.
The parameter "SchemaID" is only
used to specify the GUID for a provider-schema query not defined by the OLE DB
specification, that is the parameter is required only if QueryType is set to
adSchemaProviderSpecific.
The method returns a Recordset object containing the specified schema
information. The Recordset will be opened as a read-only, static cursor. The
columns or fields in the Recordset is specified by the QueryType.
The
ConnectionObect.OpenSchema Method is used to return self-descriptive information
about the data source, such as tables in the data source, columns in the tables,
data types supported, in the form of a Recordset object grouped by
QueryType instead of a group of properties of data source.
The QueryType argument is a GUID that indicates the columns or schemas returned
according to the full list of schemas in the OLE DB specification.
The Criteria argument is used to limit the results of a schema query by
specifying an array of values that must occur in a corresponding subset of
columns, called constraint columns, in the resulting Recordset.
The constant adSchemaProviderSpecific is used for the QueryType argument if the
provider defines its own nonstandard schema queries not listed on the full list
of schemas in the OLE DB specification. When adSchemaProviderSpecific is used,
the SchemaID argument is required to pass the GUID of the schema query to
execute. If QueryType is set to adSchemaProviderSpecific but SchemaID is not
provided, an error will result.
Providers are not required to support all the OLE DB standard schema queries.
Specifically, only adSchemaTables, adSchemaColumns, and adSchemaProviderTypes
are required by the OLE DB specification. However, the provider is not required
to support the Criteria constraints listed earlier for those schema queries.
The OpenSchema method is not available on a client-side Connection object used
for Remote Data Service Usage.
In Visual Basic, columns that have a four-byte unsigned integer (DBTYPE UI4) in
the Recordset returned from the OpenSchema method on the Connection object
cannot be compared to other variables.
In Visual C/C++, When not using client-side cursors, retrieving the
"ORDINAL_POSITION" of a column schema in ADO returns a variant of type VT_R8 in
MDAC 2.7, MDAC 2.8, and Windows Data Access Components (Windows DAC) 6.0, while
the type used in MDAC 2.6 was VT_I4. Programs written for MDAC 2.6 that only
look for a variant returned of type VT_I4 would get a zero for every ordinal if
run under MDAC 2.7, MDAC 2.8, and Windows DAC 6.0 without modification. This
change was made because the data type that OLE DB returns is DBTYPE_UI4, and in
the signed VT_I4 type there is not enough room to contain all possible values
without possibly truncation occurring and thereby causing a loss of data.