Поделиться через


Поддержка разреженных столбцов (OLE DB)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Скачать драйвер OLE DB

В этом разделе приводятся сведения о поддержке разреженных столбцов OLE DB Driver for SQL Server. Дополнительные сведения о разреженных столбцах см. в статье Sparse Columns Support in OLE DB Driver for SQL Server (Поддержка разреженных столбцов в OLE DB Driver for SQL Server). Например, отображение метаданных столбца и каталога для разреженных столбцов (OLE DB).

Метаданные инструкции OLE DB

Начиная с SQL Server 2008 (10.0.x), доступно новое значение флага DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET. Это значение должно задаваться для столбцов со значениями column_set. Флаг DBCOLUMNFLAGS можно получить с помощью параметра dwFlags IColumnsInfo::GetColumnsInfo и столбца DBCOLUMN_FLAGS набора строк, возвращаемого IColumnsRowset::GetColumnsRowset.

Метаданные каталога OLE DB

В DBSCHEMA_COLUMNS добавлены два дополнительных столбца SQL Server.

Имя столбца Тип данных Значения/комментарии
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 (8.x), как показано ниже.

  • Новые наборы строк схемы невидимы; для них нет строк в наборе строк схемы.

  • Новые столбцы в наборе строк COLUMNS невидимы.

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET не устанавливается для столбцов column_set.

  • DBCOMPUTEMODE_NOTCOMPUTED устанавливается для столбцов column_set.

Поддержка разреженных столбцов в OLE DB

Для поддержки разреженных столбцов были изменены следующие интерфейсы OLE DB Driver for 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 Если используется выбор * из таблицы, он возвращает все столбцы, которые не являются элементами разреженного column_set, а также XML-столбец, содержащий значения всех столбцов, отличных от NULL, которые являются членами разреженных column_set, если они присутствуют.
IOpenRowset::OpenRowset IOpenRowset::OpenRowset возвращает набор строк с теми же столбцами, что и ICommand::Execute, с запросом select * в той же таблице.
ITableDefinition Этот интерфейс не изменился для разреженных столбцов или столбцов column_set. Приложения, которым необходимо изменить схему, должны выполнить соответствующий код Transact-SQL напрямую.

См. также

Программирование драйвера OLE DB для SQL Server