Compartilhar via


Suporte de colunas esparsas (OLE DB)

Este tópico fornece informações sobre SQL Server Native Client suporte do OLE DB para colunas esparsas. Para obter mais informações sobre colunas esparsas, consulte Suporte a colunas esparsas em SQL Server Native Client. Para ver um exemplo, confira Exibir metadados de colunas e de catálogos para colunas esparsas (OLE DB).

Metadados de instruções do OLE DB

Começando com o SQL Server 2008, um novo valor de sinalizador DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET, está disponível. Esse valor deve ser definido para colunas que são valores column_set. O sinalizador DBCOLUMNFLAGS pode ser recuperado por meio do parâmetro dwFlags de IColumnsInfo::GetColumnsInfo e da coluna DBCOLUMN_FLAGS do conjunto de linhas retornado por IColumnsRowset::GetColumnsRowset.

Metadados de catálogo do OLE DB

Duas colunas específicas do SQL Server adicionais foram acrescentadas a DBSCHEMA_COLUMNS.

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

Também foram acrescentados dois conjuntos de linhas de esquema adicionais. Estes conjuntos de linhas têm a mesma estrutura que DBSCHEMA_COLUMNS, mas retornam conteúdo diferente. DBSCHEMA_COLUMNS_EXTENDED retorna todas as colunas, independentemente da associação column_set. DBSCHEMA_SPARSE_COLUMN_SET só retorna colunas que são os membros do column_set esparso.

Comportamento de DataTypeCompatibility do OLE DB

O comportamento com DataTypeCompatibility=80 (na cadeia de conexão) é consistente com um cliente SQL Server 2000, da seguinte maneira:

  • Os novos conjuntos de linhas de esquema não são visíveis e não há nenhuma linha para eles nos conjuntos de linhas do esquema.

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

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET não é definido para colunas column_set.

  • DBCOMPUTEMODE_NOTCOMPUTED é definido para colunas column_set.

Suporte do OLE DB para colunas esparsas

As seguintes interfaces OLE DB foram modificadas em SQL Server Native Client para dar suporte a colunas esparsas:

Tipo ou função de membro DESCRIÇÃO
IColumnsInfo::GetColumnsInfo Um novo valor de sinalizador DBCOLUMNFLAGS DBCOLUMNFLAGS_SS_ISCOLUMNSET é definido para column_set colunas em dwFlags.

DBCOLUMNFLAGS_WRITE é definido para colunas column_set.
IColumsRowset::GetColumnsRowset Um novo valor de sinalizador DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET, é definido para colunas column_set em DBCOLUMN_FLAGS.

DBCOLUMN_COMPUTEMODE é definido como DBCOMPUTEMODE_DYNAMIC para colunas column_set.
IDBSchemaRowset::GetSchemaRowset DBSCHEMA_COLUMNS retorna duas colunas novas: SS_IS_COLUMN_SET e SS_IS_SPARSE.

DBSCHEMA_COLUMNS só retorna colunas que não são membros de um column_set.

Foram adicionados dois novos conjuntos de linhas de esquema: DBSCHEMA_COLUMNS_EXTENDED retornará todas as colunas, independentemente da dispersão de associação column_set. DBSCHEMA_SPARSE_COLUMN_SET só retorna colunas que são os membros de um column_set. Estes conjuntos de linhas novos têm as mesmas colunas e restrições que DBSCHEMA_COLUMNS.
IDBSchemaRowset::GetSchemas 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::Execute Se select * fromtable for usado, ele retornará todas as colunas que não são membros da esparsa column_set, além de uma coluna XML que contém valores de todas as colunas não nulas que são membros do esparso column_set, se presente.
IOpenRowset::OpenRowset IOpenRowset::OpenRowset retorna um conjunto de linhas com as mesmas colunas que ICommand::Execute, com uma consulta select * na mesma tabela.
ITableDefinition Não há nenhuma alteração nesta interface para colunas esparsas ou para colunas column_set. Aplicativos que precisam fazer modificações de esquema devem executar o Transact-SQL apropriado diretamente.

Consulte Também

SQL Server Native Client (OLE DB)