Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Viktigt!
SQL Server Native Client (SNAC) levereras inte med:
- SQL Server 2022 (16.x) och senare versioner
- SQL Server Management Studio 19 och senare versioner
SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.
Använd någon av följande drivrutiner för nya projekt:
För SQLNCLI som levereras som en komponent i SQL Server-databasmotorn (versioner 2012 till och med 2019), se det här Support Lifecycle-undantag.
Sql Server-masskopieringsfunktionen stöder överföring av stora mängder data till eller från en SQL Server-tabell eller vy. Data kan också överföras genom att ange en SELECT-instruktion. Data kan flyttas mellan SQL Server och en operativsystemdatafil, till exempel en ASCII-fil. Datafilen kan ha olika format. formatet definieras för masskopiering i en formatfil. Du kan också läsa in data i programvariabler och överföras till SQL Server med hjälp av masskopieringsfunktioner och metoder.
Ett exempelprogram som visar den här funktionen finns i Masskopiera data med IRowsetFastLoad (OLE DB).
Ett program använder vanligtvis masskopiering på något av följande sätt:
Masskopiering från en tabell, vy eller resultatuppsättning för en Transact-SQL-instruktion till en datafil där data lagras i samma format som tabellen eller vyn.
Detta kallas för en datafil i inbyggt läge.
Masskopiering från en tabell, vy eller resultatuppsättning för en Transact-SQL-instruktion till en datafil där data lagras i ett annat format än tabellen eller vyn.
I det här fallet skapas en separat formatfil som definierar egenskaperna (datatyp, position, längd, terminator och så vidare) för varje kolumn när den lagras i datafilen. Om alla kolumner konverteras till teckenformat kallas den resulterande filen för en datafil i teckenläge.
Masskopiera från en datafil till en tabell eller vy.
Vid behov används en formatfil för att fastställa layouten för datafilen.
Läs in data i programvariabler och importera sedan data till en tabell eller vy med hjälp av masskopieringsfunktionerna för masskopiering på en rad i taget.
Datafiler som används av masskopieringsfunktioner behöver inte skapas av ett annat masskopieringsprogram. Alla andra system kan generera en datafil och formatera en fil enligt masskopieringsdefinitioner. dessa filer kan sedan användas med ett SQL Server-masskopieringsprogram för att importera data till SQL Server. Du kan till exempel exportera data från ett kalkylblad i en flikavgränsad fil, skapa en formatfil som beskriver den flikavgränsade filen och sedan använda ett masskopieringsprogram för att snabbt importera data till SQL Server. Datafiler som genereras av masskopiering kan också importeras till andra program. Du kan till exempel använda masskopieringsfunktioner för att exportera data från en tabell eller visa till en flikavgränsad fil som sedan kan läsas in i ett kalkylblad.
Programmerare som kodar program för att använda masskopieringsfunktioner bör följa de allmänna reglerna för god masskopieringsprestanda. Mer information om stöd för masskopieringsåtgärder i SQL Server finns i Massimport och export av data (SQL Server).
Begränsningar och restriktioner
En CLR-användardefinierad typ (UDT) måste vara bunden som binära data. Även om en formatfil anger SQLCHAR som datatyp för en UDT-målkolumn behandlar BCP-verktyget data som binärt.
Använd inte SET FMTONLY OFF med masskopieringsåtgärder. STÄLL IN FMTONLY OFF kan orsaka att masskopieringsåtgärden misslyckas eller ger oväntade resultat.
SQL Server Native Client OLE DB-provider
SQL Server Native Client OLE DB-providern implementerar två metoder för att utföra masskopieringsåtgärder med en SQL Server-databas. Den första metoden omfattar användning av IRowsetFastLoad-gränssnittet för minnesbaserade masskopieringsåtgärder. och det andra innebär att använda IBCPSession-gränssnittet för filbaserade masskopieringsåtgärder.
Använda minnesbaserade masskopieringsåtgärder
SQL Server Native Client OLE DB-providern implementerar gränssnittet IRowsetFastLoad för att visa stöd för SQL Server-minnesbaserade masskopieringsåtgärder. Gränssnittet IRowsetFastLoad implementerar metoderna IRowsetFastLoad::Commit och IRowsetFastLoad::InsertRow .
Aktivera en session för IRowsetFastLoad
Konsumenten meddelar SQL Server Native Client OLE DB-providern om behovet av masskopiering genom att ange den SQL Server Native Client OLE DB-providerspecifika datakällegenskapen SSPROP_ENABLEFASTLOAD till VARIANT_TRUE. Med egenskapen inställd på datakällan skapar konsumenten en SQL Server Native Client OLE DB-providersession. Den nya sessionen ger konsumentåtkomst till IRowsetFastLoad-gränssnittet .
Anmärkning
Om gränssnittet IDataInitialize används för att initiera datakällan är det nödvändigt att ange egenskapen SSPROP_IRowsetFastLoad i parametern rgPropertySets för metoden IOpenRowset::OpenRowset ; Annars returnerar anropet till metoden OpenRowset E_NOINTERFACE.
Om du aktiverar en session för masskopiering begränsas stöd för SQL Server Native Client OLE DB-provider för gränssnitt i sessionen. En masskopieringsaktiverad session exponerar endast följande gränssnitt:
IDBSchemaRowset
IGetDataSource
IOpenRowset
ISupportErrorInfo
ITransactionJoin
Om du vill inaktivera skapandet av masskopieringsaktiverade raduppsättningar och få SQL Server Native Client OLE DB-providersessionen att återgå till standardbearbetning återställer du SSPROP_ENABLEFASTLOAD till VARIANT_FALSE.
IRowsetFastLoad-rader
SQL Server Native Client OLE DB-providerns masskopieringsrader är skrivskyddade, men de exponerar gränssnitt som gör det möjligt för konsumenten att fastställa strukturen för en SQL Server-tabell. Följande gränssnitt exponeras på en masskopieringsaktiverad SQL Server Native Client OLE DB-providerraduppsättning:
IAccessor
IColumnsInfo
IColumnsRowset
IConvertType
IRowsetFastLoad
IRowsetInfo
ISupportErrorInfo
De providerspecifika egenskaperna SSPROP_FASTLOADOPTIONS, SSPROP_FASTLOADKEEPNULLS och SSPROP_FASTLOADKEEPIDENTITY kontrollbeteenden för en SQL Server Native Client OLE DB-provider masskopieringsraduppsättning. Egenskaperna anges i rgProperties-medlemmen för en rgPropertySetsIOpenRowset-parametermedlem .
| Egenskaps-ID | Beskrivning |
|---|---|
| SSPROP_FASTLOADKEEPIDENTITY | Kolumn: Nej R/W: Läsa/skriva Typ: VT_BOOL Standard: VARIANT_FALSE Beskrivning: Underhåller identitetsvärden som tillhandahålls av konsumenten. VARIANT_FALSE: Värden för en identitetskolumn i SQL Server-tabellen genereras av SQL Server. Alla värden som är bundna till kolumnen ignoreras av SQL Server Native Client OLE DB-providern. VARIANT_TRUE: Konsumenten binder en accessor som ger ett värde för en SQL Server-identitetskolumn. Identitetsegenskapen är inte tillgänglig för kolumner som accepterar NULL, så konsumenten ger ett unikt värde för varje IRowsetFastLoad::Insert-anrop . |
| SSPROP_FASTLOADKEEPNULLS | Kolumn: Nej R/W: Läsa/skriva Typ: VT_BOOL Standard: VARIANT_FALSE Beskrivning: Underhåller NULL för kolumner med standardvillkor. Påverkar endast SQL Server-kolumner som accepterar NULL och har en standardvillkor tillämpad. VARIANT_FALSE: SQL Server infogar standardvärdet för kolumnen när SQL Server Native Client OLE DB-providerkonsumenten infogar en rad som innehåller NULL för kolumnen. VARIANT_TRUE: SQL Server infogar NULL för kolumnvärdet när SQL Server Native Client OLE DB-providerkonsumenten infogar en rad som innehåller NULL för kolumnen. |
| SSPROP_FASTLOADOPTIONS | Kolumn: Nej R/W: Läsa/skriva Typ: VT_BSTR Standard: ingen Beskrivning: Den här egenskapen är samma som -h "hint[,... n]" alternativet för bcp-verktyget . Följande strängar kan användas som alternativ i masskopieringen av data till en tabell. ORDER(column[ASC | DESC][,... n]): Sortera dataordningen i datafilen. Prestanda för masskopiering förbättras om datafilen som läses in sorteras enligt det klustrade indexet i tabellen. = ROWS_PER_BATCHbb: Antal rader med data per batch (som bb). Servern optimerar massbelastningen enligt värdet bb. Som standard är ROWS_PER_BATCH okänt. = KILOBYTES_PER_BATCHcc: Antal kilobyte (KB) data per batch (som cc). Som standard är KILOBYTES_PER_BATCH okänt. TABLOCK: Ett lås på tabellnivå förvärvas under hela masskopieringsåtgärden. Det här alternativet förbättrar prestanda avsevärt eftersom om du bara håller ett lås under hela masskopieringsåtgärden minskar låskonkurrationen i tabellen. En tabell kan läsas in av flera klienter samtidigt om tabellen inte har några index och TABLOCK har angetts. Som standard bestäms låsningsbeteendet av tabellalternativtabelllåset vid massinläsning. CHECK_CONSTRAINTS: Eventuella begränsningar för table_name kontrolleras under masskopieringsåtgärden. Som standard ignoreras begränsningar. FIRE_TRIGGER: SQL Server använder radversioner för utlösare och lagrar radversionerna i versionsarkivet i tempdb. Därför är massloggningsoptimeringar tillgängliga även när utlösare är aktiverade. Innan du massimporterar en batch med ett stort antal rader med aktiverade utlösare kan du behöva utöka storleken på tempdb. |
Använda filbaserade masskopieringsåtgärder
SQL Server Native Client OLE DB-providern implementerar IBCPSession-gränssnittet för att exponera stöd för SQL Server-filbaserade masskopieringsåtgärder. IBCPSession-gränssnittet implementerar IBCPSession::BCPColFmt, IBCPSession::BCPColumns, IBCPSession::BCPControl, IBCPSession::BCPDone, IBCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt och IBCPSession::BCPWriteFmt-metoder.
SQL Server Native Client ODBC-drivrutin
SQL Server Native Client ODBC-drivrutinen har samma stöd för masskopieringsåtgärder som ingick i tidigare versioner av SQL Server ODBC-drivrutinen. Information om masskopieringsåtgärder med odbc-drivrutinen för SQL Server-klienten finns i Utföra masskopieringsåtgärder (ODBC).
Se även
inbyggda klientfunktioner i SQL Server
Egenskaper för datakälla (OLE DB)
massimport och export av data (SQL Server)
IRowsetFastLoad (OLE DB)
IBCPSession (OLE DB)
Optimera prestanda för massimport