Freigeben über


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

Dieses Thema enthält Informationen zur OLE DB-Unterstützung von SQL Server Native Client für sparse Spalten. Weitere Informationen zu Sparsespalten finden Sie unter Sparse Columns Support in SQL Server Native Client. Ein Beispiel finden Sie unter Anzeigen von Spalten- und Katalogmetadaten für Sparsespalten (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 über den dwFlags-Parameter von IColumnsInfo::GetColumnsInfo und die DBCOLUMN_FLAGS-Spalte des Rowsets abgerufen werden, das von IColumnsRowset::GetColumnsRowset zurückgegeben wird.

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 Sparsespalte 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

Das Verhalten mit DataTypeCompatibility=80 (im Verbindungszeichenfolge) entspricht einem SQL Server 2000-Client wie folgt:

  • 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 sparse Spalten zu unterstützen:

Typ oder Elementfunktion BESCHREIBUNG
IColumnsInfo::GetColumnsInfo Für Spalten in dwFlags wird ein neuer DBCOLUMNFLAGS-Flagwert DBCOLUMNFLAGS_SS_ISCOLUMNSET festgelegtcolumn_set.

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 die Liste verfügbarer Schemarowsets ein.
ICommand::Execute Wenn "*" aus der Tabelle verwendet wird, werden alle Spalten zurückgegeben, die keine Member der Sparse column_setsind, sowie eine XML-Spalte, die Werte aller Nicht-Null-Spalten enthält, die Member der sparse column_setsind , falls vorhanden.
IOpenRowset::OpenRowset „IOpenRowset::OpenRowset“ gibt mithilfe einer select *-Abfrage für dieselbe Tabelle ein Rowset mit denselben Spalten wie „ICommand::Execute“ zurück.
ITableDefinition Es gibt keine Änderungen an dieser Schnittstelle für Sparsespalten oder für column_set-Spalten. Anwendungen, die Schemaänderungen vornehmen müssen, müssen den entsprechenden Transact-SQL-Code direkt ausführen.

Weitere Informationen

SQL Server Native Client (OLE DB)