Поддержка разреженных столбцов в драйвере OLE DB для SQL ServerSparse Columns Support in OLE DB Driver for SQL Server

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

СкачатьСкачать OLE DB DriverDownloadDownload OLE DB Driver

Драйвер OLE DB для SQL Server поддерживает разреженные столбцы.OLE DB Driver for SQL Server supports sparse columns. Дополнительные сведения о разреженных столбцах в SQL ServerSQL Serverсм. в статьях Использование разреженных столбцов и Использование наборов столбцов.For more information about sparse columns in SQL ServerSQL Server, see Use Sparse Columns and Use Column Sets.

Дополнительные сведения о разреженных столбцах в драйвере OLE DB для SQL Server см. в статье Sparse Columns Support in OLE DB Driver for SQL Server (Поддержка разреженных столбцов в драйвере OLE DB для SQL Server).For more information about sparse column support in OLE DB Driver for SQL Server, Sparse Columns Support (OLE DB).

Сведения о примерах приложений, которые демонстрируют эту функцию, см. в разделе Образцы программирования для SQL Server.For information about sample applications that demonstrate this feature, see SQL Server Data Programming Samples.

Пользовательские сценарии для разреженных столбцов и OLE DB Driver for SQL ServerUser Scenarios for Sparse Columns and OLE DB Driver for SQL Server

Следующая таблица содержит обычные пользовательские сценарии работы с разреженными столбцами для пользователей OLE DB Driver for SQL Server.The following table summarizes the common user scenarios for OLE DB Driver for SQL Server users with sparse columns:

СценарийScenario ПоведениеBehavior
выберите * из таблицы или IOpenRowset::OpenRowset.select * from table or IOpenRowset::OpenRowset. Возвращает все столбцы, которые не являются элементами набора разреженных столбцов column_set плюс XML-столбец, содержащий значения ненулевых столбцов, являющихся элементами набора разреженных столбцов column_set.Returns all columns that are not members of the sparse column_set, plus an XML column that contains the values of all non-null columns that are members of the sparse column_set.
Ссылка на столбец по имени.Reference a column by name. На столбец можно ссылаться независимо от состояния разреженности или вхождения в column_set.The column can be referenced regardless of its sparse column status or column_set membership.
Доступ к столбцам-элементам column_set через вычисляемый XML-столбец.Access column_set member columns through a computed XML column. К столбцам, являющимся элементами column_set, можно получить доступ при помощи выборки column_set по имени; эти столбцы могут содержать значения, вставленные и обновленные при обновлении XML в столбце column_set.Columns that are members of the sparse column_set can be accessed by selecting the column_set by name and can have values inserted and updated by updating the XML in the column_set column.

Значение должно соответствовать схеме для столбцов column_set.The value must conform to the schema for column_set columns.
Получение метаданных для столбцов в таблице через набор строк схемы DBSCHEMA_COLUMNS без ограничений на столбец (OLE DB).Retrieve metadata for all columns in a table through the DBSCHEMA_COLUMNS schema rowset with no column restriction (OLE DB). Возвращает строку для всех столбцов, не входящих в column_set.Returns a row for all columns that are not members of a column_set. Если таблица содержит разреженный column_set, для него будет возвращена строка.If the table has a sparse column_set, a row will be returned for it.

Обратите внимание, что при этом не возвращаются метаданные для столбцов, являющихся элементами column_set.Note that this does not return metadata for columns that are members of a column_set.
Получение данных для всех столбцов, независимо от разреженности или вхождения в column_set.Retrieve metadata for all columns, regardless of sparseness or membership in a column_set. В этом случае может вернуться очень большое число строк.This might return a very large number of rows. Вызовите метод IDBSchemaRowset::GetRowset для набора строк схемы DBSCHEMA_COLUMNS_EXTENDED.Call IDBSchemaRowset::GetRowset for the DBSCHEMA_COLUMNS_EXTENDED schema rowset.
Получение метаданных только для столбцов, являющихся элементами column_set.Retrieve metadata only for columns that are members of a column_set. В этом случае может вернуться очень большое число строк.This might return a very large number of rows. Вызовите метод IDBSchemaRowset::GetRowset для набора строк схемы DBSCHEMA_SPARSE_COLUMN_SET.Call IDBSchemaRowset::GetRowset for the DBSCHEMA_SPARSE_COLUMN_SET schema rowset.
Определение, является ли столбец разреженным.Determine whether a column is sparse. Обратитесь к столбцу SS_IS_SPARSE результирующего набора строк схемы DBSCHEMA_COLUMNS (ODBC).Consult the SS_IS_SPARSE column of the DBSCHEMA_COLUMNS schema rowset (OLE DB).
Определение, является ли столбец элементом column_set.Determine if a column is a column_set. Обратитесь к столбцу SS_IS_COLUMN_SET набора строк схемы DBSCHEMA_COLUMNS.Consult the SS_IS_COLUMN_SET column of the DBSCHEMA_COLUMNS schema rowset. Или просмотрите dwFlags, возвращенный IColumnsinfo::GetColumnInfo или DBCOLUMNFLAGS в наборе строк, возвращаемом IColumnsRowset::GetColumnsRowset.Or, consult dwFlags returned by IColumnsinfo::GetColumnInfo or DBCOLUMNFLAGS in the rowset returned by IColumnsRowset::GetColumnsRowset. Для столбцов column_set будет установлен DBCOLUMNFLAGS_SS_ISCOLUMNSET.For column_set columns, DBCOLUMNFLAGS_SS_ISCOLUMNSET will be set.
Импорт и экспорт разреженных столбцов программой BCP для таблиц без column_set.Import and export of sparse columns by BCP for a table with no column_set. Отличий от предыдущих версий Драйвера OLE DB для SQL Server в поведении нет.No change in behavior from previous versions of OLE DB Driver for SQL Server.
Импорт и экспорт разреженных столбцов программой BCP для таблиц с column_set.Import and export of sparse columns by BCP for a table with a column_set. column_set импортируется и экспортируется так же, как XML; то есть varbinary(max) , если он привязан как двоичный тип, или как nvarchar(max) , если он привязан как тип char или типа wchar.The column_set is imported and exported in the same way as XML; that is, as varbinary(max) if bound as a binary type, or as nvarchar(max) if bound as a char or wchar type.

Столбцы, являющиеся элементами набора разреженных столбцов column_set, не экспортируются как отдельные столбцы. Они экспортируются только в составе значения столбца column_set.Columns that are members of the sparse column_set are not exported as distinct columns; they are only exported in the value of the column_set.
Поведение queryout для программы BCP.queryout behavior for BCP. Отличий от предыдущих версий Драйвера OLE DB для SQL Server в обработке столбцов с явно заданными именами нет.No change in the handling of explicitly named columns from previous versions of OLE DB Driver for SQL Server.

Сценарии, задействующие импорт и экспорт между таблицами с различными схемами, могут потребовать специальной обработки.Scenarios involving import and export between tables with different schemas may require special handling.

Дополнительные сведения о программе BCP см. в подразделе «Поддержка массового копирования (BCP) для разреженных столбцов» далее в данном разделе.For more information about BCP, see Bulk Copy (BCP) Support for Sparse Columns, later in this topic.

Работа в клиентах низкого уровняDown-Level Client Behavior

Клиенты низкого уровня вернут метаданные только для столбцов, которые не являются элементами набора разреженных столбцов column_set для SQLColumns и DBSCHMA_COLUMNS.Down-level clients will return metadata only for columns that are not members of the sparse column_set for SQLColumns and DBSCHMA_COLUMNS.

Клиенты низкого уровня могут получить доступ к столбцам, являющимся элементами набора разреженных столбцов column_set, по имени. Столбец column_set будет доступен как XML-столбец для клиентов SQL Server 2005 (9.x)SQL Server 2005 (9.x).Down-level clients can access columns that are members of the sparse column_set by name, and the column_set column will be accessible as an XML column to SQL Server 2005 (9.x)SQL Server 2005 (9.x) clients.

Поддержка массового копирования (BCP) для разреженных столбцовBulk Copy (BCP) Support for Sparse Columns

Нет изменений в интерфейсе API программы BCP в OLE DB для разреженных столбцов или функций для столбцов column_set.There are no changes to the BCP API in OLE DB for the sparse columns or column_set features.

Если таблица содержит column_set, то разреженные столбцы не обрабатываются как отдельные столбцы.If a table has a column_set, sparse columns are not handled as distinct columns. Значения всех разреженных столбцов включаются в значение столбца column_set, который экспортируется таким же способом, как XML-столбец, то есть как varbinary(max) , если привязан как двоичному типу, или как nvarchar(max) , если привязан тип char или wchar).The values of all sparse columns are included in the value of the column_set, which is exported in the same way as an XML column; that is, as varbinary(max) if bound as a binary type, or as nvarchar(max) if bound as a char or wchar type). При импорте значение column_set должно соответствовать схеме column_set.On import, the column_set value must conform to the schema of the column_set.

Для операций queryout нет изменений в способе обработки столбцов, на которые имеются явные ссылки.For queryout operations, there is no change to the way explicitly referenced columns are handled. Поведение столбцов column_set совпадает с поведением XML-столбцов, и разреженность не имеет значения для обработки именованных разреженных столбцов.column_set columns have the same behavior as XML columns and sparseness has no effect on the handling of named sparse columns.

Однако, если queryout используется для экспорта и пользователь ссылается по имени на разреженные столбцы, являющиеся элементами набора разреженных столбцов, нельзя осуществить импорт напрямую в таблицу такой же структуры.However, if queryout is used for export and you reference sparse columns that are members of the sparse column set by name, you cannot perform a direct import into a similarly structured table. Это обусловлено тем, что программа BCP использует для импорта метаданные, согласованные с операцией select * , и не может сопоставить столбцы-элементы column_set с этими метаданными.This is because BCP uses metadata consistent with a select * operation for the import and is unable to match column_set member columns with this metadata. Для отдельного импорта каждого столбца, входящего в набор разреженных столбцов column_set, необходимо определить представление для таблицы, которая ссылается на необходимые столбцы набора column_set, и выполнить операцию импорта с помощью этого представления.To import column_set member columns individually, you must define a view on the table that references the desired column_set columns, and you must perform the import operation using the view.

См. также:See Also

Драйвер OLE DB для SQL ServerOLE DB Driver for SQL Server