Dela via


Stöd för glesa kolumner i OLE DB-drivrutin för SQL Server

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Ladda ned OLE DB-drivrutins

OLE DB-drivrutin för SQL Server stöder glesa kolumner. Mer information om glesa kolumner i SQL Server finns i Använda glesa kolumner och Använda kolumnuppsättningar.

Mer information om stöd för glesa kolumner i OLE DB-drivrutin för SQL Server finns stöd för glesa kolumner (OLE DB).

Användarscenarier för glesa kolumner och OLE DB-drivrutin för SQL Server

I följande tabell sammanfattas de vanliga användarscenarierna för OLE DB-drivrutin för SQL Server-användare med glesa kolumner:

Scenario Uppförande
välj * från tabell eller IOpenRowset::OpenRowset. Returnerar alla kolumner som inte är medlemmar i den glesa column_setplus en XML-kolumn som innehåller värdena för alla icke-null-kolumner som är medlemmar i den glesa column_set.
Referera till en kolumn efter namn. Kolumnen kan refereras oavsett dess glesa kolumnstatus eller column_set medlemskap.
Få åtkomst till column_set medlemskolumner via en beräknad XML-kolumn. Kolumner som är medlemmar i den glesa column_set kan nås genom att välja column_set efter namn och kan ha värden infogade och uppdaterade genom att uppdatera XML-koden i kolumnen column_set.

Värdet måste överensstämma med schemat för column_set kolumner.
Hämta metadata för alla kolumner i en tabell via DBSCHEMA_COLUMNS schemaraduppsättning utan kolumnbegränsning (OLE DB). Returnerar en rad för alla kolumner som inte är medlemmar i en column_set. Om tabellen har en gles column_setreturneras en rad för den.

Observera att detta inte returnerar metadata för kolumner som är medlemmar i en column_set.
Hämta metadata för alla kolumner, oavsett gleshet eller medlemskap i en column_set. Detta kan returnera ett mycket stort antal rader. Anropa IDBSchemaRowset::GetRowset för den DBSCHEMA_COLUMNS_EXTENDED schemaraduppsättningen.
Hämta endast metadata för kolumner som är medlemmar i en column_set. Detta kan returnera ett mycket stort antal rader. Anropa IDBSchemaRowset::GetRowset för den DBSCHEMA_SPARSE_COLUMN_SET schemaraduppsättningen.
Avgör om en kolumn är gles. Läs kolumnen SS_IS_SPARSE i DBSCHEMA_COLUMNS schemaraduppsättning (OLE DB).
Kontrollera om en kolumn är en column_set. Läs kolumnen SS_IS_COLUMN_SET i DBSCHEMA_COLUMNS schemaraduppsättningen. Du kan också läsa dwFlags som returneras av IColumnsinfo::GetColumnInfo eller DBCOLUMNFLAGS i raduppsättningen som returneras av IColumnsRowset::GetColumnsRowset. För column_set kolumner anges DBCOLUMNFLAGS_SS_ISCOLUMNSET.
Importera och exportera glesa kolumner av BCP för en tabell utan column_set. Ingen ändring i beteendet från tidigare versioner av OLE DB-drivrutinen för SQL Server.
Importera och exportera glesa kolumner av BCP för en tabell med en column_set. column_set importeras och exporteras på samma sätt som XML. som varbinary(max) om det är bundet som en binär typ, eller som nvarchar(max) om det är bundet som en tecken eller wchar typ.

Kolumner som är medlemmar i den glesa column_set exporteras inte som distinkta kolumner. de exporteras endast i värdet för column_set.
queryout beteende för BCP. Ingen ändring i hanteringen av explicit namngivna kolumner från tidigare versioner av OLE DB-drivrutinen för SQL Server.

Scenarier som omfattar import och export mellan tabeller med olika scheman kan kräva särskild hantering.

Mer information om BCP finns i Stöd för masskopiering (BCP) för glesa kolumner senare i det här avsnittet.

Down-Level klientbeteende

Klienter på nednivå returnerar endast metadata för kolumner som inte är medlemmar i den glesa column_set för SQLColumns och DBSCHEMA_COLUMNS.

Klienter på nednivå kan komma åt kolumner som är medlemmar i den glesa column_set efter namn, och kolumnen column_set kommer att vara tillgänglig som en XML-kolumn för SQL Server 2005-klienter (9.x).

Stöd för masskopiering (BCP) för glesa kolumner

Det finns inga ändringar i BCP-API:et i OLE DB för de glesa kolumnerna eller column_set funktioner.

Om en tabell har en column_sethanteras inte glesa kolumner som distinkta kolumner. Värdena för alla glesa kolumner ingår i värdet för column_set, som exporteras på samma sätt som en XML-kolumn. som varbinary(max) om det är bundet som en binär typ, eller som nvarchar(max) om det är bundet som en tecken eller wchar typ). Vid import måste värdet för column_set överensstämma med schemat för column_set.

För frågeutfrågning åtgärder sker ingen ändring i hur explicit refererade kolumner hanteras. column_set kolumner har samma beteende som XML-kolumner och gleshet påverkar inte hanteringen av namngivna glesa kolumner.

Men om queryout- används för export och du refererar till glesa kolumner som är medlemmar i den glesa kolumnuppsättningen efter namn, kan du inte utföra en direkt import till en liknande strukturerad tabell. Detta beror på att BCP använder metadata som är konsekventa med en väljer * åtgärd för importen och inte kan matcha column_set medlemskolumner med dessa metadata. Om du vill importera column_set medlemskolumner separat måste du definiera en vy i tabellen som refererar till önskade column_set kolumner och du måste utföra importåtgärden med hjälp av vyn.

Se även

OLE DB-drivrutin för SQL Server