Unterstützung für Spalten mit geringer Dichte (OLE DB)

Dieses Thema enthält Informationen über SQL Server Native Client OLE DB-Unterstützung für Spalten mit geringer Dichte. Weitere Informationen zu Spalten mit geringer Dichte finden Sie unter Unterstützung für Spalten mit geringer Dichte in SQL Server Native Client.

OLE DB-Anweisungsmetadaten

Ab SQL Server 2008 ist ein neuer DBCOLUMNFLAGS-Flagwert, DBCOLUMNFLAGS_SS_ISCOLUMNSET, verfügbar. Dieser Wert sollte für Spalten festgelegt werden, die column_set-Werte sind. Das DBCOLUMNFLAGS-Flag kann durch den dwFlags-Parameter von IColumnsInfo::GetColumnsInfo und die DBCOLUMN_FLAGS-Spalte des von IColumnsRowset::GetColumnsRowset zurückgegebenen Rowsets abgerufen werden.

OLE DB-Katalogmetadaten

Zwei zusätzliche SQL Server-spezifische Spalten wurden zu DBSCHEMA_COLUMNS hinzugefügt.

Spaltenname

Datentyp

Wert/Kommentare

SS_IS_SPARSE

DBTYPE_BOOL

Wenn die Spalte eine Spalte mit geringer Dichte ist, weist sie den Wert VARIANT_TRUE auf, andernfalls den Wert VARIANT_FALSE.

SS_IS_COLUMN_SET

DBTYPE_BOOL

Wenn die Spalte die column_set-Spalte mit geringer Dichte ist, weist sie den Wert VARIANT_TRUE auf, andernfalls den Wert VARIANT_FALSE.

Zwei zusätzliche Schemarowsets wurden ebenfalls hinzugefügt. Diese Rowsets verfügen über die gleiche Struktur wie DBSCHEMA_COLUMNS, geben aber andere Inhalte zurück. DBSCHEMA_COLUMNS_EXTENDED gibt alle Spalten zurück, unabhängig davon, ob sie Elemente von column_set sind. DBSCHEMA_SPARSE_COLUMN_SET gibt nur Spalten zurück, die Elemente des column_set mit geringer Dichte sind.

OLE DB DataTypeCompatibility-Verhalten

Verhalten mit DataTypeCompatibility=80 (in der Verbindungszeichenfolge) ist mit einem SQL Server 2000-Client konsistent:

  • Die neuen Schemarowsets sind nicht sichtbar, und es gibt keine Zeilen für sie im Rowset der Schemarowsets.

  • Neue Spalten im COLUMNS-Rowset sind nicht sichtbar.

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET wird nicht für column_set-Spalten festgelegt.

  • DBCOMPUTEMODE_NOTCOMPUTED wird für column_set-Spalten festgelegt.

OLE DB-Unterstützung für Spalten mit geringer Dichte

Die folgenden OLE DB-Schnittstellen wurden in SQL Server Native Client geändert, um Spalten mit geringer Dichte zu unterstützen:

Typ oder Elementfunktion

Beschreibung

IColumnsInfo::GetColumnsInfo

Ein neuer DBCOLUMNFLAGS-Flagwert, DBCOLUMNFLAGS_SS_ISCOLUMNSET, wird für column_set-Spalten in dwFlags festgelegt.

DBCOLUMNFLAGS_WRITE wird für column_set-Spalten festgelegt.

IColumsRowset::GetColumnsRowset

Ein neuer DBCOLUMNFLAGS-Flagwert, DBCOLUMNFLAGS_SS_ISCOLUMNSET, wird für column_set-Spalten in DBCOLUMN_FLAGS festgelegt.

DBCOLUMN_COMPUTEMODE wird für column_set-Spalten auf DBCOMPUTEMODE_DYNAMIC festgelegt.

IDBSchemaRowset::GetSchemaRowset

DBSCHEMA_COLUMNS gibt zwei neue Spalten zurück: SS_IS_COLUMN_SET und SS_IS_SPARSE.

DBSCHEMA_COLUMNS gibt nur Spalten zurück, die keine Elemente eines column_set sind.

Zwei neue Schemarowsets wurden hinzugefügt: DBSCHEMA_COLUMNS_EXTENDED gibt alle Spalten zurück, unabhängig davon, ob sie eine geringe Dichte aufweisen oder Elemente von column_set sind. DBSCHEMA_SPARSE_COLUMN_SET gibt nur Spalten zurück, die Elemente eines column_set sind. Diese neuen Rowsets verfügen über die gleichen Spalten und die Einschränkungen wie DBSCHEMA_COLUMNS.

IDBSchemaRowset::GetSchemas

IDBSchemaRowset::GetSchemas schließt die GUIDs für die neuen Rowsets DBSCHEMA_COLUMNS_EXTENDED und DBSCHEMA_SPARSE_COLUMN_SET in der Liste verfügbarer Schemarowsets ein.

ICommand::Execute

Wenn select * from table verwendet wird, werden alle Spalten zurückgegeben, die keine Elemente des column_set mit geringer Dichte sind, zuzüglich einer XML-Spalte, die Werte von allen Nicht-NULL-Spalten enthält, die Elemente des column_set mit geringer Dichte sind (falls vorhanden).

IOpenRowset::OpenRowset

IOpenRowset::OpenRowset gibt ein Rowset mit den gleichen Spalten wie ICommand::Execute zurück, mit einer select *-Abfrage auf die gleiche Tabelle.

ITableDefinition

Es gibt keine Änderungen an dieser Schnittstelle für Spalten mit geringer Dichte oder für column_set-Spalten. Anwendungen, die Schemaänderungen vornehmen müssen, müssen das entsprechende Transact-SQL direkt ausführen.