Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Fontos
SQL Server Native Client (SNAC) nem kerül szállításra a következőkkel:
- SQL Server 2022 (16.x) és újabb verziók
- AZ SQL Server Management Studio 19- és újabb verziói
Az SQL Server natív ügyfele (SQLNCLI vagy SQLNCLI11) és az örökölt Microsoft OLE DB Provider for SQL Server (SQLOLEDB) nem ajánlott az új alkalmazásfejlesztéshez.
Új projektek esetén használja az alábbi illesztőprogramok egyikét:
Az SQL Server adatbázismotor (2012–2019) egyik összetevőjeként szállított SQLNCLI esetében tekintse meg az alábbi támogatási életciklus-kivételt.
Az SQL Server tömeges másolási funkciója nagy mennyiségű adat SQL Server-táblába vagy nézetbe való átvitelét támogatja. Az adatok select utasítás megadásával is továbbíthatók. Az adatok áthelyezhetők az SQL Server és egy operációsrendszer-adatfájl, például egy ASCII-fájl között. Az adatfájl különböző formátumokat tartalmazhat; a formátum a formátumfájl tömeges másolására van definiálva. Igény szerint az adatok betölthetők programváltozókba, és tömeges másolási függvények és metódusok használatával továbbíthatók az SQL Serverre.
A funkciót bemutató mintaalkalmazások esetében lásd az adatok tömeges másolása az IRowsetFastLoad (OLE DB) használatával című témakört.
Az alkalmazások általában tömeges másolást használnak az alábbi módok egyikén:
Tömeges másolás egy táblából, nézetből vagy egy Transact-SQL utasítás eredménykészletéből egy olyan adatfájlba, amelyben az adatok a táblázattal vagy nézettel azonos formátumban vannak tárolva.
Ezt natív módú adatfájlnak nevezzük.
Tömeges másolás egy táblából, nézetből vagy egy Transact-SQL utasítás eredménykészletéből egy olyan adatfájlba, amelyben az adatok a tábla vagy nézet formátumától eltérő formátumban vannak tárolva.
Ebben az esetben egy külön formátumfájl jön létre, amely meghatározza az egyes oszlopok jellemzőit (adattípus, pozíció, hossz, terminátor stb.) az adatfájlban tárolva. Ha az összes oszlop karakterformátummá alakul, az eredményként kapott fájlt karaktermódú adatfájlnak nevezzük.
Tömeges másolás egy adatfájlból egy táblába vagy nézetbe.
Szükség esetén egy formátumfájl határozza meg az adatfájl elrendezését.
Töltse be az adatokat programváltozókba, majd importálja az adatokat egy táblába vagy nézetbe a tömeges másolási függvények használatával egy sorba történő tömeges másoláshoz.
A tömeges másolási függvények által használt adatfájlokat nem kell egy másik tömeges másolási programnak létrehoznia. Bármely más rendszer létrehozhat egy adatfájlt, és tömeges másolási definíciók szerint formázhatja a fájlokat; Ezek a fájlok ezután egy SQL Server tömeges másolási programmal használhatók az adatok SQL Serverbe való importálásához. Exportálhat például adatokat egy táblázatból egy tabulátorral tagolt fájlban, létrehozhat egy, a tabulátorral tagolt fájlt leíró formátumfájlt, majd tömeges másolási programmal gyorsan importálhatja az adatokat az SQL Serverbe. A tömeges másolással létrehozott adatfájlok más alkalmazásokba is importálhatók. A tömeges másolási függvényekkel például adatokat exportálhat egy táblából, vagy egy tabulátorral tagolt fájlba, amelyet aztán betölthet egy számolótáblába.
A tömeges másolási függvényeket használó alkalmazásokat kódoló programozóknak az általános szabályokat kell követnie a jó tömeges másolási teljesítmény érdekében. Az SQL Server tömeges másolási műveleteinek támogatásáról további információt az adatok tömeges importálása és exportálása (SQL Server) című témakörben talál.
Korlátozások és korlátozások
A felhasználó által definiált CLR-típust (UDT) bináris adatként kell kötni. A BCP segédprogram akkor is binárisként kezeli az adatokat, ha egy formátumfájl az SQLCHAR-t adja meg a cél UDT-oszlop adattípusaként.
Ne használja a SET FMTONLY OFF parancsot tömeges másolási műveletekkel. Az FMTONLY KI BEÁLLÍTÁSA a tömeges másolási művelet meghiúsulását vagy váratlan eredményeket okozhat.
SQL Server natív ügyféloldali OLE DB-szolgáltató
Az SQL Server natív ügyféloldali OLE DB-szolgáltatója két módszert implementál a tömeges másolási műveletek végrehajtásához egy SQL Server-adatbázissal. Az első módszer az IRowsetFastLoad interfész használatát foglalja magában a memóriaalapú tömeges másolási műveletekhez; A második pedig az IBCPSession felület fájlalapú tömeges másolási műveletekhez való használatát foglalja magában.
Memóriaalapú tömeges másolási műveletek használata
Az SQL Server natív ügyféloldali OLE DB-szolgáltatója az IRowsetFastLoad felületet implementálja, hogy elérhetővé tegye az SQL Server memóriaalapú tömeges másolási műveleteinek támogatását. Az IRowsetFastLoad felület implementálja az IRowsetFastLoad::Commit és IRowsetFastLoad::InsertRow metódusokat.
Munkamenet engedélyezése az IRowsetFastLoadhoz
A fogyasztó értesíti az SQL Server natív ügyfél OLE DB-szolgáltatóját a tömeges másolás szükségességéről, ha az SQL Server natív ügyfél OLE DB-szolgáltatóspecifikus adatforrás-tulajdonságát SSPROP_ENABLEFASTLOAD VARIANT_TRUE. Az adatforráson beállított tulajdonsággal a fogyasztó létrehoz egy SQL Server natív ügyfél OLE DB-szolgáltatói munkamenetet. Az új munkamenet lehetővé teszi a felhasználók számára az IRowsetFastLoad felület elérését.
Megjegyzés:
Ha az IDataInitialize interfészt használja az adatforrás inicializálásához, akkor be kell állítani a SSPROP_IRowsetFastLoad tulajdonságot az IOpenRowset::OpenRowset metódus rgPropertySets paraméterében; ellenkező esetben az OpenRowset metódus hívása E_NOINTERFACE ad vissza.
Ha tömeges másolásra engedélyez egy munkamenetet, az korlátozza az SQL Server natív ügyféloldali OLE DB-szolgáltatójának támogatását a munkamenet interfészeihez. A tömeges másolással kompatibilis munkamenetek csak a következő interfészeket teszik elérhetővé:
IDBSchemaRowset
IGetDataSource
IOpenRowset
ISupportErrorInfo
ITransactionJoin
Ha le szeretné tiltani a tömeges másolással kompatibilis sorhalmazok létrehozását, és az SQL Server natív ügyfél OLE DB-szolgáltatói munkamenete visszaáll a szabványos feldolgozásra, állítsa vissza a SSPROP_ENABLEFASTLOAD VARIANT_FALSE.
IRowsetFastLoad Rowsets
Az SQL Server natív ügyféloldali OLE DB-szolgáltató tömeges másolási sorhalmazai írásvédettek, de olyan interfészeket tesznek elérhetővé, amelyek lehetővé teszik a fogyasztó számára az SQL Server-tábla szerkezetének meghatározását. A következő felületek egy tömeges másolásra képes SQL Server natív ügyfél OLE DB-szolgáltatósorkészleten érhetők el:
IAccessor
IColumnsInfo
IColumnsRowset
IConvertType
IRowsetFastLoad
IRowsetInfo
ISupportErrorInfo
A szolgáltatóspecifikus tulajdonságok SSPROP_FASTLOADOPTIONS, SSPROP_FASTLOADKEEPNULLS és SSPROP_FASTLOADKEEPIDENTITY az SQL Server natív ügyféloldali OLE DB-szolgáltató tömeges másolási sorhalmazának viselkedését. A tulajdonságok az rgPropertySetsIOpenRowset paramétertag rgProperties tagjában vannak megadva.
| Tulajdonságazonosító | Leírás |
|---|---|
| SSPROP_FASTLOADKEEPIDENTITY | Oszlop: Nem R/W: Olvasás/írás Típus: VT_BOOL Alapértelmezett: VARIANT_FALSE Leírás: Fenntartja a fogyasztó által megadott identitásértékeket. VARIANT_FALSE: Az SQL Server-táblában lévő identitásoszlop értékeit az SQL Server hozza létre. Az SQL Server natív ügyféloldali OLE DB-szolgáltató figyelmen kívül hagyja az oszlophoz kötött értékeket. VARIANT_TRUE: A fogyasztó egy SQL Server-identitásoszlophoz értéket biztosító tartozékot köt össze. Az identitástulajdonság nem érhető el a NULL értéket elfogadó oszlopokon, ezért a fogyasztó egyedi értéket biztosít minden IRowsetFastLoad::Hívás beszúrásakor . |
| SSPROP_FASTLOADKEEPNULLS | Oszlop: Nem R/W: Olvasás/írás Típus: VT_BOOL Alapértelmezett: VARIANT_FALSE Leírás: A NULL értéket a DEFAULT korlátozással rendelkező oszlopokhoz tartja fenn. Csak azokat az SQL Server-oszlopokat érinti, amelyek elfogadják a NULL értéket, és alapértelmezett korlátot alkalmaznak. VARIANT_FALSE: Az SQL Server beszúrja az oszlop alapértelmezett értékét, amikor az SQL Server natív ügyféloldali OLE DB-szolgáltatója beszúr egy null értéket tartalmazó sort az oszlophoz. VARIANT_TRUE: Az SQL Server null értéket szúr be az oszlop értékéhez, amikor az SQL Server natív ügyféloldali OLE DB-szolgáltatója beszúr egy NULL értéket tartalmazó sort az oszlophoz. |
| SSPROP_FASTLOADOPTIONS | Oszlop: Nem R/W: Olvasás/írás Típus: VT_BSTR Alapértelmezett: nincs Leírás: Ez a tulajdonság megegyezik a -h "tipp[,... n]" lehetőséget a bcp segédprogramban. Az adatok táblázatba történő tömeges másolása során az alábbi sztring(ek) használhatók lehetőség(ek)ként. ORDER(column[ASC | DESC][,... n]): Az adatok sorrendje az adatfájlban. A tömeges másolás teljesítménye javul, ha a betöltendő adatfájl a tábla fürtözött indexe szerint van rendezve. = ROWS_PER_BATCHbb: Adatsorok száma kötegenként (bb). A kiszolgáló a bb értéknek megfelelően optimalizálja a tömeges terhelést. Alapértelmezés szerint a ROWS_PER_BATCH ismeretlen. = KILOBYTES_PER_BATCHcc: Az adatok kilobájtjainak (KB) száma kötegenként (másolatot kap). Alapértelmezés szerint a KILOBYTES_PER_BATCH ismeretlen. TABLOCK: A rendszer táblaszintű zárolást szerez be a tömeges másolási művelet időtartamára. Ez a beállítás jelentősen javítja a teljesítményt, mivel a zárolás csak a tömeges másolási művelet időtartamára való tartása csökkenti a tábla zárolási versengését. Egy táblát egyszerre több ügyfél is betölthet, ha a tábla nem tartalmaz indexeket, és a TABLOCK meg van adva. Alapértelmezés szerint a zárolási viselkedést a táblabeállítás táblazárolása határozza meg tömeges terhelés esetén. CHECK_CONSTRAINTS: A tömeges másolási művelet során a rendszer ellenőrzi a table_name korlátozásait. Alapértelmezés szerint a korlátozások figyelmen kívül lesznek hagyva. FIRE_TRIGGER: Az SQL Server sorverziót használ az eseményindítókhoz, és a sorverziókat a tempdb verziótárában tárolja. Ezért a tömeges naplózás optimalizálása akkor is elérhető, ha az eseményindítók engedélyezve vannak. Mielőtt tömegesen importál egy nagy számú sort tartalmazó köteget, és engedélyezve van az eseményindítók, előfordulhat, hogy ki kell bővítenie a tempdb méretét. |
Fájlalapú tömeges másolási műveletek használata
Az SQL Server natív ügyféloldali OLE DB-szolgáltatója implementálja az IBCPSession felületet, hogy elérhetővé tegye az SQL Server fájlalapú tömeges másolási műveleteinek támogatását. Az IBCPSession interfész implementálja az IBCPSession::BCPColFmt, IBCPSession::BCPColumns, IBCPSession::BCPControl, IBCPSession::BCPDone, IBCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt és IBCPSession::BCPWriteFmt metódusok.
SQL Server natív ügyfél ODBC-illesztőprogramja
Az SQL Server natív ügyfél ODBC-illesztőprogramja ugyanazt a támogatást nyújtja a tömeges másolási műveletekhez, amelyek az SQL Server ODBC-illesztőprogram korábbi verzióinak részei voltak. Az SQL Server natív ügyfél ODBC-illesztőprogramját használó tömeges másolási műveletekről további információt a Tömeges másolási műveletek végrehajtása (ODBC) című témakörben talál.
Lásd még:
Az SQL Server natív ügyfélfunkciói
Adatforrás tulajdonságai (OLE DB)
adatok tömeges importálása és exportálása (SQL Server)
IRowsetFastLoad (OLE DB)
IBCPSession (OLE DB)
A tömeges importálás teljesítményének optimalizálása