Partilhar via


Suporte de Colunas Esparsas (OLE DB)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

Este tópico fornece informações sobre o suporte ao Driver OLE DB para SQL Server para colunas esparsas. Para mais informações sobre colunas esparsas, veja Suporte a Colunas Esparsas no Driver OLE DB para SQL Server. Para um exemplo, veja Metadados de Coluna de Exibição e Catálogo para Colunas Escassas (OLE DB).

Metadados da Instrução OLE DB

A partir do SQL Server 2008 (10.0.x), está disponível um novo valor de flag DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET. Este valor deve ser definido para colunas que são column_set valores. A flag DBCOLUMNFLAGS pode ser recuperada através do parâmetro dwFlags de IColumnsInfo::GetColumnsInfo e da coluna DBCOLUMN_FLAGS do conjunto de linhas devolvida por IColumnsRowset::GetColumnsRowset.

Metadados do Catálogo OLE DB

Duas colunas adicionais específicas para SQL Server foram adicionadas ao DBSCHEMA_COLUMNS.

Nome da coluna Tipo de dados Valor/comentários
SS_IS_SPARSE DBTYPE_BOOL Se a coluna for uma coluna esparsa, esta tem o valor VARIANT_TRUE; caso contrário, VARIANT_FALSE.
SS_IS_COLUMN_SET DBTYPE_BOOL Se a coluna for a coluna esparsa column_set , esta tem o valor VARIANT_TRUE; caso contrário, VARIANT_FALSE.

Também foram adicionados dois conjuntos adicionais de linhas de esquema. Estes conjuntos de linhas têm a mesma estrutura que DBSCHEMA_COLUMNS mas retornam conteúdo diferente. DBSCHEMA_COLUMNS_EXTENDED devolve todas as colunas, independentemente da column_set de membros. DBSCHEMA_SPARSE_COLUMN_SET devolve apenas colunas que pertencem à column_set esparsa.

Comportamento de Compatibilidade de Tipos de Dados do OLE DB

O comportamento com DataTypeCompatibility=80 (na cadeia de ligação) é consistente com um cliente SQL Server 2000 (8.x), da seguinte forma:

  • Os novos conjuntos de linhas do esquema não são visíveis, e não existem linhas para eles no conjunto de linhas do esquema.

  • As novas colunas no conjunto de linhas COLUMNS não são visíveis.

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET não está definido para column_set colunas.

  • DBCOMPUTEMODE_NOTCOMPUTED está definido para column_set colunas.

Suporte OLE DB para Colunas Escassas

As seguintes interfaces OLE DB foram modificadas no OLE DB Driver para SQL Server para suportar colunas esparsas:

Função de tipo ou elemento Description
IColumnsInfo::GetColumnsInfo Um novo valor de flag do DBCOLUMNFLAGS DBCOLUMNFLAGS_SS_ISCOLUMNSET é definido para column_set colunas no dwFlags.

DBCOLUMNFLAGS_WRITE está definido para column_set colunas.
IColumnsRowset::GetColumnsRowset Um novo valor de flag DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET, é definido para column_set colunas em DBCOLUMN_FLAGS.

DBCOLUMN_COMPUTEMODE está definido para DBCOMPUTEMODE_DYNAMIC para column_set colunas.
IDBSchemaRowset::GetSchemaRowset DBSCHEMA_COLUMNS devolve duas novas colunas: SS_IS_COLUMN_SET e SS_IS_SPARSE.

DBSCHEMA_COLUMNS devolve apenas colunas que não pertencem a um column_set.

Foram adicionados dois novos conjuntos de linhas de esquema: DBSCHEMA_COLUMNS_EXTENDED devolverá todas as colunas independentemente da escassez da column_set pertença. DBSCHEMA_SPARSE_COLUMN_SET devolve apenas colunas que pertencem a um column_set. Estes novos conjuntos de linhas têm as mesmas colunas e restrições que DBSCHEMA_COLUMNS.
IDBSchemaRowset::GetSchemas O IDBSchemaRowset::GetSchemas inclui os GUIDs para os novos conjuntos de linhas DBSCHEMA_COLUMNS_EXTENDED e DBSCHEMA_SPARSE_COLUMN_SET na lista de conjuntos de linhas de esquema disponíveis.
ICommand::Executar Se for usado select * fromtable , devolve todas as colunas que não são membros do column_set esparso, mais uma coluna XML que contém os valores de todas as colunas não nulas que pertencem ao column_set esparso, se existirem.
IOpenRowset::OpenRowSet IOpenRowset::OpenRowset devolve um conjunto de linhas com as mesmas colunas que ICommand::Execute, com uma consulta select * na mesma tabela.
ITableDefinition Não há alterações nesta interface para colunas esparsas ou para colunas column_set . As aplicações que têm de fazer modificações no esquema devem executar diretamente a Transact-SQL apropriada.

Ver também

Driver OLE DB para programação do SQL Server