Suporte de colunas esparsas (OLE DB)
Este tópico fornece informações sobre o suporte ao OLE DB do SQL Server Native Client para colunas esparsas. Para obter mais informações sobre colunas esparsas, consulte Suporte a colunas esparsas no 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
A partir do 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 no SQL Server Native Client para dar suporte a colunas esparsas:
Tipo ou função de membro | DESCRIÇÃO |
---|---|
IColumnsInfo::GetColumnsInfo | Um novo DBCOLUMNFLAGS_SS_ISCOLUMNSET de valor de sinalizador DBCOLUMNFLAGS é 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 * from table for usado, ele retornará todas as colunas que não são membros do esparso 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 houver. |
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. |