Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Base de dados SQL no Microsoft Fabric
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. |
Conteúdo relacionado
- Driver OLE DB para programação do SQL Server