Поддержка разреженных столбцов (OLE DB)
В этом разделе приводятся сведения о поддержке разреженных столбцов поставщиком OLE DB для собственного клиента SQL Server. Дополнительные сведения о разреженных столбцах см. в разделе Поддержка разреженных столбцов в собственном клиенте SQL Server.
Метаданные инструкции OLE DB
Начиная с версии SQL Server 2008, доступно новое значение DBCOLUMNFLAGS_SS_ISCOLUMNSET флага DBCOLUMNFLAGS. Это значение должно быть задано для столбцов со значениями column_set. Флаг DBCOLUMNFLAGS может быть получен с помощью параметра dwFlags командыIColumnsInfo::GetColumnsInfo и столбца DBCOLUMN_FLAGS из набора строк, возвращаемого командой IColumnsRowset::GetColumnsRowset.
Метаданные каталога OLE DB
Два дополнительных столбца, специфических для SQL Server, были добавлены в DBSCHEMA_COLUMNS.
именем столбца |
Тип данных |
Значения/комментарии |
---|---|---|
SS_IS_SPARSE |
DBTYPE_BOOL |
Если столбец является разреженным, установлено значение VARIANT_TRUE; в противном случае – значение VARIANT_FALSE. |
SS_IS_COLUMN_SET |
DBTYPE_BOOL |
Если столбец является разреженным столбцом column_set, установлено значение VARIANT_TRUE; в противном случае – значение VARIANT_FALSE. |
Также были добавлены два дополнительных набора строк схемы. Эти наборы строк имеют такую же структуру, как DBSCHEMA_COLUMNS, но возвращают другое содержимое. DBSCHEMA_COLUMNS_EXTENDED возвращает все столбцы, независимо от членства в column_set. DBSCHEMA_SPARSE_COLUMN_SET возвращает только столбцы, являющиеся членами разреженного column_set.
Поведение OLE DB DataTypeCompatibility
Поведение с DataTypeCompatibility=80 (в строке соединения) согласовано с SQL Server 2000 следующим образом.
Новые наборы строк схемы невидимы, и для них нет строк в наборе строк набора строк схемы.
Новые столбцы в наборе строк COLUMNS невидимы.
DBCOLUMNFLAGS_SS_ISCOLUMNSET не устанавливается для столбцов column_set.
DBCOMPUTEMODE_NOTCOMPUTED устанавливается для column_set.
Поддержка разреженных столбцов в OLE DB
Для поддержки разреженных столбцов были изменены следующие интерфейсы OLE DB в собственном клиенте SQL Server.
Тип или функция-элемент |
Description |
---|---|
IColumnsInfo::GetColumnsInfo |
Новое значение DBCOLUMNFLAGS_SS_ISCOLUMNSET флага DBCOLUMNFLAGS задается для столбца column_set в dwFlags. DBCOLUMNFLAGS_WRITE задается для столбцов column_set. |
IColumsRowset::GetColumnsRowset |
Новое значение DBCOLUMNFLAGS_SS_ISCOLUMNSET флага DBCOLUMNFLAGS задается для столбца column_set в столбце DBCOLUMN_FLAGS. DBCOLUMN_COMPUTEMODE устанавливается в значение DBCOMPUTEMODE_DYNAMIC для столбцов column_set. |
IDBSchemaRowset::GetSchemaRowset |
DBSCHEMA_COLUMNS возвращает два новых столбца: SS_IS_COLUMN_SET и SS_IS_SPARSE. DBSCHEMA_COLUMNS возвращает только столбцы, не являющиеся членами столбца column_set. Были добавлены два новых набора строк схемы. DBSCHEMA_COLUMNS_EXTENDED возвращает все столбцы, независимо от разреженности членства в column_set. DBSCHEMA_SPARSE_COLUMN_SET возвращает только столбцы, являющиеся членами столбца column_set. Новые наборы строк содержат такие же столбцы и ограничения, как DBSCHEMA_COLUMNS. |
IDBSchemaRowset::GetSchemas |
IDBSchemaRowset::GetSchemas включает идентификаторы GUID для новых наборов строк DBSCHEMA_COLUMNS_EXTENDED и DBSCHEMA_SPARSE_COLUMN_SET в списке доступных наборов строк схемы. |
ICommand::Execute |
Если используется запрос select * from table, он возвращает все столбцы, не являющиеся членами разреженного столбца column_set, а также столбец XML, содержащий значения всех столбцов со значениями, отличными от NULL, являющихся членами разреженного column_set, если они есть. |
IOpenRowset::OpenRowset |
IOpenRowset::OpenRowset возвращает набор строк с теми же столбцами, что и ICommand::Execute, с запросом select * к той же таблице. |
ITableDefinition |
Этот интерфейс не меняется для разреженных столбцов или столбцов column_set. Приложения, которым требуется выполнить изменения схемы, должны выполнять соответствующий Transact-SQL напрямую. |