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