Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
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. |
Ver também
Driver OLE DB para programação do SQL Server