Delen via


Ondersteuning voor sparsekolommen in sql Server Native Client

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Belangrijk

SQL Server Native Client (SNAC) wordt niet geleverd met:

  • SQL Server 2022 (16.x) en latere versies
  • SQL Server Management Studio 19 en latere versies

De SQL Server Native Client (SQLNCLI of SQLNCLI11) en de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor de ontwikkeling van nieuwe toepassingen.

Gebruik een van de volgende stuurprogramma's voor nieuwe projecten:

Voor SQLNCLI die als onderdeel van SQL Server Database Engine (versies 2012 tot en met 2019) wordt geleverd, raadpleegt u deze uitzondering voor de levenscyclus van ondersteuning.

SQL Server Native Client ondersteunt sparse-kolommen. Zie Sparse-kolommen gebruiken en Kolomsets gebruikenvoor meer informatie over sparsekolommen in SQL Server.

Zie ONDERSTEUNING voor Sparse-kolommen (ODBC) en ONDERSTEUNING voor Sparse-kolommen (OLE DB)voor meer informatie over ondersteuning voor sparsekolommen in SQL Server Native Client.

Gebruikersscenario's voor Sparse-kolommen en SQL Server Native Client

De volgende tabel bevat een overzicht van de algemene gebruikersscenario's voor SQL Server Native Client-gebruikers met sparse kolommen:

Scenario Gedrag
selecteer * in tabel of IOpenRowset::OpenRowset. Retourneert alle kolommen die geen lid zijn van de sparse-column_set, plus een XML-kolom die de waarden bevat van alle niet-null-kolommen die lid zijn van de parserings-column_set.
Verwijzen naar een kolom op naam. Er kan naar de kolom worden verwezen, ongeacht de status van de geparseerde kolom of column_set lidmaatschap.
Toegang tot column_set lidkolommen via een berekende XML-kolom. Kolommen die lid zijn van de sparse-column_set kunnen worden geopend door de column_set op naam te selecteren en waarden in te voegen en bij te werken door de XML in de column_set kolom bij te werken.

De waarde moet voldoen aan het schema voor column_set kolommen.
Metagegevens ophalen voor alle kolommen in een tabel via SQLColumns met een kolomzoekpatroon van NULL of '%' (ODBC); of via de DBSCHEMA_COLUMNS schemarijset zonder kolombeperking (OLE DB). Retourneert een rij voor alle kolommen die geen lid zijn van een column_set. Als de tabel een sparse-column_setheeft, wordt er een rij geretourneerd.

Houd er rekening mee dat hiermee geen metagegevens worden geretourneerd voor kolommen die lid zijn van een column_set.
Metagegevens voor alle kolommen ophalen, ongeacht de parsiteit of het lidmaatschap van een column_set. Dit kan een zeer groot aantal rijen retourneren. Stel het descriptorveld SQL_SOPT_SS_NAME_SCOPE in op SQL_SS_NAME_SCOPE_EXTENDED en roep SQLColumns (ODBC) aan.

Roep IDBSchemaRowset::GetRowset aan voor de DBSCHEMA_COLUMNS_EXTENDED schemarijset (OLE DB).

Dit scenario is niet mogelijk vanuit een toepassing die gebruikmaakt van SQL Server Native Client uit een eerdere versie dan SQL Server 2008 (10.0.x). Een dergelijke toepassing kan echter rechtstreeks query's uitvoeren op systeemweergaven.
Haal alleen metagegevens op voor kolommen die lid zijn van een column_set. Dit kan een zeer groot aantal rijen retourneren. Stel het descriptorveld SQL_SOPT_SS_NAME_SCOPE in op SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET en roep SQLColumns (ODBC) aan.

Roep IDBSchemaRowset::GetRowset aan voor de DBSCHEMA_SPARSE_COLUMN_SET schemarijset (OLE DB).

Dit scenario is niet mogelijk vanuit een toepassing die gebruikmaakt van SQL Server Native Client uit een eerdere versie dan SQL Server 2008 (10.0.x). Een dergelijke toepassing kan echter systeemweergaven opvragen.
Bepalen of een kolom sparse is. Raadpleeg de SS_IS_SPARSE kolom van de SQLColumns-resultatenset (ODBC).

Raadpleeg de kolom SS_IS_SPARSE van de DBSCHEMA_COLUMNS schemarijset (OLE DB).

Dit scenario is niet mogelijk vanuit een toepassing die gebruikmaakt van SQL Server Native Client uit een eerdere versie dan SQL Server 2008 (10.0.x). Een dergelijke toepassing kan echter systeemweergaven opvragen.
Bepalen of een kolom een column_setis. Raadpleeg de SS_IS_COLUMN_SET kolom van de resultatenset SQLColumns. Of raadpleeg het sql Server-specifieke kolomkenmerk SQL_CA_SS_IS_COLUMN_SET (ODBC).

Raadpleeg de kolom SS_IS_COLUMN_SET van de DBSCHEMA_COLUMNS schemarijset. Of raadpleeg dwFlags geretourneerd door IColumnsinfo::GetColumnInfo of DBCOLUMNFLAGS in de rijenset geretourneerd door IColumnsRowset::GetColumnsRowset. Voor column_set kolommen wordt DBCOLUMNFLAGS_SS_ISCOLUMNSET ingesteld (OLE DB).

Dit scenario is niet mogelijk vanuit een toepassing die gebruikmaakt van SQL Server Native Client uit een eerdere versie dan SQL Server 2008 (10.0.x). Een dergelijke toepassing kan echter systeemweergaven opvragen.
Importeren en exporteren van sparsekolommen per BCP voor een tabel zonder column_set. Er is geen wijziging in gedrag ten opzichte van eerdere versies van SQL Server Native Client.
Importeren en exporteren van sparse kolommen per BCP voor een tabel met een column_set. De column_set wordt op dezelfde manier geïmporteerd en geëxporteerd als XML; dat wil gezegd, als varbinary(max) als afhankelijk als binair type, of als nvarchar(max) als afhankelijk als een teken of wchar type.

Kolommen die lid zijn van de sparse-column_set worden niet als afzonderlijke kolommen geëxporteerd; ze worden alleen geëxporteerd in de waarde van de column_set.
query-out gedrag voor BCP. Er is geen wijziging aangebracht in de verwerking van expliciet benoemde kolommen uit eerdere versies van SQL Server Native Client.

Scenario's met betrekking tot importeren en exporteren tussen tabellen met verschillende schema's kunnen speciale verwerking vereisen.

Zie BCP-ondersteuning (Bulk Copy) voor Sparse-kolommen verderop in dit onderwerp voor meer informatie over BCP.

Down-Level clientgedrag

Clients op down-level retourneren alleen metagegevens voor kolommen die geen lid zijn van de sparse-column_set voor SQLColumns en DBSCHEMA_COLUMNS. De extra OLE DB-schemarijsets die zijn geïntroduceerd in SQL Server 2008 (10.0.x) Native Client zijn niet beschikbaar, noch zullen de wijzigingen in SQLColumns in ODBC via SQL_SOPT_SS_NAME_SCOPE.

Clients op down-level hebben toegang tot kolommen die lid zijn van de sparse-column_set op naam. De column_set kolom is toegankelijk als een XML-kolom voor SQL Server 2005-clients (9.x).

BCP-ondersteuning (Bulk Copy) voor Sparse-kolommen

Er zijn geen wijzigingen in de BCP-API in ODBC of OLE DB voor de sparsekolommen of column_set functies.

Als een tabel een column_setheeft, worden sparse kolommen niet als afzonderlijke kolommen verwerkt. De waarden van alle sparsekolommen worden opgenomen in de waarde van de column_set, die op dezelfde manier worden geëxporteerd als een XML-kolom; dat wil gezegd, zoals varbinary(max) als afhankelijk als binair type, of als nvarchar(max) als afhankelijk als een teken of wchar type). Bij het importeren moet de column_set-waarde voldoen aan het schema van de column_set.

Voor query-outbewerkingen bewerkingen is er geen wijziging in de manier waarop expliciet naar kolommen wordt verwezen. column_set kolommen hetzelfde gedrag hebben als XML-kolommen en sparseriteit heeft geen invloed op de verwerking van benoemde sparse-kolommen.

Als query-out echter wordt gebruikt voor export en u verwijst naar sparsekolommen die lid zijn van de sparsekolom die op naam zijn ingesteld, kunt u geen directe import uitvoeren in een vergelijkbare gestructureerde tabel. Dit komt doordat BCP metagegevens gebruikt die consistent zijn met een selecteer * bewerking voor het importeren en niet kan overeenkomen met column_set lidkolommen met deze metagegevens. Als u column_set lidkolommen afzonderlijk wilt importeren, moet u een weergave definiëren in de tabel die verwijst naar de gewenste column_set kolommen en moet u de importbewerking uitvoeren met behulp van de weergave.

Zie ook

systeemeigen SQL Server Client Programming-