Share via


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. Ein Beispiel hierzu finden Sie unter Anzeigen von Spalten- und Katalogmetadaten für Spalten mit geringer Dichte (OLE DB).

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.

Siehe auch

Konzepte

SQL Server Native Client (OLE DB)