Partilhar via


Suporte a colunas esparsas no driver OLE DB para SQL Server

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure do Azure Synapse AnalyticsAnalytics Platform System (PDW)

Baixar driver OLE DB

O driver OLE DB para SQL Server oferece suporte a colunas esparsas. Para obter mais informações sobre colunas esparsas no SQL Server, consulte Usar colunas esparsas e Usar conjuntos de colunas.

Para obter mais informações sobre o suporte a colunas esparsas no driver OLE DB para SQL Server, Suporte a colunas esparsas (OLE DB).

Cenários de usuário para colunas esparsas e driver OLE DB para SQL Server

A tabela a seguir resume os cenários de usuário comuns para o driver OLE DB para usuários do SQL Server com colunas esparsas:

Cenário Comportamento
selecione * na tabela ou IOpenRowset::OpenRowset. Retorna todas as colunas que não são membros do column_setesparso , além de uma coluna XML que contém os valores de todas as colunas não nulas que são membros do column_setesparso.
Faça referência a uma coluna pelo nome. A coluna pode ser referenciada independentemente de seu status de coluna esparsa ou associação column_set.
Acesse column_set colunas de membros por meio de uma coluna XML computada. As colunas que são membros do column_set esparso podem ser acessadas selecionando o column_set pelo nome e podem ter valores inseridos e atualizados atualizando o XML na coluna column_set.

O valor deve estar em conformidade com o esquema para column_set colunas.
Recupere metadados para todas as colunas em uma tabela por meio do conjunto de linhas do esquema DBSCHEMA_COLUMNS sem restrição de coluna (OLE DB). Retorna uma linha para todas as colunas que não são membros de um column_set. Se a tabela tiver uma column_setesparsa, uma linha será retornada para ela.

Observe que isso não retorna metadados para colunas que são membros de um column_set.
Recupere metadados para todas as colunas, independentemente da parcimônia ou associação a um column_set. Isso pode retornar um número muito grande de linhas. Chame IDBSchemaRowset::GetRowset para o conjunto de linhas do esquema DBSCHEMA_COLUMNS_EXTENDED.
Recupere metadados somente para colunas que são membros de um column_set. Isso pode retornar um número muito grande de linhas. Chame IDBSchemaRowset::GetRowset para o conjunto de linhas do esquema DBSCHEMA_SPARSE_COLUMN_SET.
Determine se uma coluna é esparsa. Consulte a coluna SS_IS_SPARSE do conjunto de linhas do esquema DBSCHEMA_COLUMNS (OLE DB).
Determine se uma coluna é um column_set. Consulte a coluna SS_IS_COLUMN_SET do conjunto de linhas do esquema DBSCHEMA_COLUMNS. Ou, consulte dwFlags retornados por IColumnsinfo::GetColumnInfo ou DBCOLUMNFLAGS no conjunto de linhas retornado por IColumnsRowset::GetColumnsRowset. Para column_set colunas, DBCOLUMNFLAGS_SS_ISCOLUMNSET será definida.
Importação e exportação de colunas esparsas por BCP para uma tabela sem column_set. Nenhuma alteração no comportamento de versões anteriores do driver OLE DB para SQL Server.
Importação e exportação de colunas esparsas por BCP para uma tabela com um column_set. O column_set é importado e exportado da mesma forma que o XML; ou seja, como varbinary(max) se vinculado como um tipo binário, ou como nvarchar(max) se vinculado como um char ou wchar tipo.

As colunas que são membros do column_set esparso não são exportadas como colunas distintas; só são exportados no valor do column_set.
queryout comportamento para BCP. Nenhuma alteração no processamento de colunas explicitamente nomeadas de versões anteriores do Driver OLE DB para SQL Server.

Cenários que envolvem importação e exportação entre tabelas com esquemas diferentes podem exigir tratamento especial.

Para obter mais informações sobre BCP, consulte Suporte de cópia em massa (BCP) para colunas esparsas, mais adiante neste tópico.

Down-Level Comportamento do Cliente

Os clientes de nível inferior retornarão metadados somente para colunas que não são membros do column_set esparso para SQLColumns e DBSCHEMA_COLUMNS.

Os clientes de nível inferior podem acessar colunas que são membros do column_set esparso pelo nome, e a coluna column_set será acessível como uma coluna XML para clientes do SQL Server 2005 (9.x).

Suporte de cópia em massa (BCP) para colunas esparsas

Não há alterações na API BCP no OLE DB para colunas esparsas ou recursos column_set.

Se uma tabela tiver um column_set, colunas esparsas não serão tratadas como colunas distintas. Os valores de todas as colunas esparsas são incluídos no valor do column_set, que é exportado da mesma forma que uma coluna XML; ou seja, como varbinary(max) se vinculado como um tipo binário, ou como nvarchar(max) se vinculado como um char ou wchar tipo). Na importação, o valor column_set deve estar em conformidade com o esquema do column_set.

Para operações de de consulta, não há nenhuma alteração na maneira como as colunas explicitamente referenciadas são tratadas. column_set colunas têm o mesmo comportamento que as colunas XML e a esparsidade não tem efeito no processamento de colunas esparsas nomeadas.

No entanto, se de consulta for usada para exportação e você fizer referência a colunas esparsas que são membros da coluna esparsa definida pelo nome, não será possível executar uma importação direta em uma tabela estruturada de forma semelhante. Isso ocorre porque o BCP usa metadados consistentes com uma operação select * para a importação e não consegue corresponder column_set colunas de membro com esses metadados. Para importar column_set colunas de membro individualmente, você deve definir um modo de exibição na tabela que faça referência às colunas de column_set desejadas e executar a operação de importação usando o modo de exibição.

Ver também

Driver OLE DB para SQL Server