Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Banco de dados SQL no Microsoft Fabric
Este tópico fornece informações sobre o suporte do Driver do OLE DB para SQL Server para colunas esparsas. Para obter mais informações sobre colunas esparsas, confira Suporte a colunas esparsas no Driver do OLE DB para SQL Server. 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 (10.0.x), 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 column_set esparsa, 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 a column_set. DBSCHEMA_SPARSE_COLUMN_SET só retorna colunas que são os membros do column_set esparso.
Comportamento de DataTypeCompatibility do OLE DB
Comportamento com DataTypeCompatibility=80 (na cadeia de conexão) é consistente com um cliente SQL Server 2000 (8.x), como abaixo:
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 do OLE DB foram modificadas no Driver do OLE DB para SQL Server 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 colunas column_set em dwFlags. DBCOLUMNFLAGS_WRITE é definido para colunas column_set. |
| IColumnsRowset::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 da associação a 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 do column_set esparso, além de uma coluna XML que contém valores de todas as colunas não nulas que são membros do column_set esparso, 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 nessa interface em colunas esparsas ou em colunas column_set. Aplicativos que precisam fazer modificações de esquema devem executar o Transact-SQL apropriado diretamente. |