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_set sind, sowie eine XML-Spalte, die Werte aller Nicht-Null-Spalten enthält, die Member der sparse column_set sind , 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. |