Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Důležité
SQL Server Native Client (SNAC) není dodáván s:
- SQL Server 2022 (16.x) a novější verze
- SQL Server Management Studio 19 a novější verze
Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).
Pro nové projekty použijte jeden z následujících ovladačů:
Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.
Funkce hromadného kopírování SQL Serveru podporuje přenos velkých objemů dat do nebo z tabulky nebo zobrazení SQL Serveru. Data lze také přenést zadáním příkazu SELECT. Data je možné přesouvat mezi SQL Serverem a datovým souborem operačního systému, jako je například soubor ASCII. Datový soubor může mít různé formáty; Formát je definován pro hromadné kopírování ve formátu souboru. Volitelně je možné data načíst do programových proměnných a přenést do SQL Serveru pomocí funkcí a metod hromadného kopírování.
Ukázkovou aplikaci, která ukazuje tuto funkci, naleznete v tématu Hromadné kopírování dat pomocí IRowsetFastLoad (OLE DB).
Aplikace obvykle používá hromadné kopírování jedním z následujících způsobů:
Hromadné kopírování z tabulky, zobrazení nebo sady výsledků příkazu Transact-SQL do datového souboru, ve kterém jsou data uložena ve stejném formátu jako tabulka nebo zobrazení.
Tomu se říká datový soubor v nativním režimu.
Hromadné kopírování z tabulky, zobrazení nebo sady výsledků příkazu Transact-SQL do datového souboru, ve kterém jsou data uložena v jiném formátu než v tabulce nebo zobrazení.
V tomto případě se vytvoří samostatný formátový soubor, který definuje charakteristiky (datový typ, umístění, délku, ukončovací znak atd.) každého sloupce, který je uložený v datovém souboru. Pokud jsou všechny sloupce převedeny na formát znaků, výsledný soubor se nazývá datový soubor v režimu znaků.
Hromadné kopírování z datového souboru do tabulky nebo zobrazení
V případě potřeby se k určení rozložení datového souboru použije formátový soubor.
Načtěte data do proměnných programu a pak je naimportujte do tabulky nebo zobrazení pomocí funkcí hromadného kopírování pro hromadné kopírování najednou.
Datové soubory používané funkcemi hromadného kopírování nemusí být vytvořeny jiným programem hromadného kopírování. Jakýkoli jiný systém může generovat datový soubor a formátovat soubor podle definic hromadného kopírování; tyto soubory lze pak použít s programem hromadného kopírování SQL Serveru k importu dat do SQL Serveru. Můžete například exportovat data z tabulky v souboru s oddělovači tabulátoru, vytvořit formátový soubor popisující soubor s oddělovači tabulátoru a pak pomocí programu hromadného kopírování rychle importovat data do SQL Serveru. Datové soubory vygenerované hromadnou kopií lze také importovat do jiných aplikací. Pomocí funkcí hromadného kopírování můžete například exportovat data z tabulky nebo zobrazení do souboru s oddělovači tabulátoru, který by se pak mohl načíst do tabulky.
Programátoři kódující aplikace pro použití funkcí hromadného kopírování by měli dodržovat obecná pravidla pro dobrý výkon hromadného kopírování. Další informace o podpoře operací hromadného kopírování na SQL Serveru najdete v tématu Hromadný import a export dat (SQL Server).
Limitace a omezení
Uživatelem definovaný typ CLR (UDT) musí být vázán jako binární data. I když formátovací soubor určuje SQLCHAR jako datový typ pro cílový sloupec UDT, nástroj BCP bude považovat data za binární.
Nepoužívejte funkci SET FMTONLY OFF s operacemi hromadného kopírování. SET FMTONLY OFF může způsobit selhání operace hromadného kopírování nebo poskytnutí neočekávaných výsledků.
Zprostředkovatel OLE DB nativního klienta SQL Serveru
Zprostředkovatel OLE DB nativního klienta SQL Serveru implementuje dvě metody pro provádění operací hromadného kopírování s databází SQL Serveru. První metoda zahrnuje použití IRowsetFastLoad rozhraní pro operace hromadného kopírování založené na paměti; a druhá zahrnuje použití rozhraní IBCPSession pro operace hromadného kopírování založené na souborech.
Použití operací hromadného kopírování založeného na paměti
Zprostředkovatel OLE DB nativního klienta SYSTÉMU SQL Server implementuje rozhraní IRowsetFastLoad , aby zpřístupnil podporu operací hromadného kopírování založeného na paměti SYSTÉMU SQL Server. IRowsetFastLoad rozhraní implementuje IRowsetFastLoad::Commit a IRowsetFastLoad::InsertRow metody.
Povolení relace pro IRowsetFastLoad
Příjemce oznámí poskytovateli OLE DB nativního klienta SYSTÉMU SQL Server o potřebě hromadného kopírování nastavením vlastnosti zdroje dat specifické pro zprostředkovatele OLE DB nativního pro SQL Server SSPROP_ENABLEFASTLOAD na VARIANT_TRUE. S vlastností nastavenou ve zdroji dat vytvoří příjemce relaci zprostředkovatele OLE DB nativního klienta SYSTÉMU SQL Server. Nová relace umožňuje uživatelům přístup k rozhraní IRowsetFastLoad .
Poznámka:
Pokud IDataInitialize rozhraní se používá k inicializaci zdroje dat, je nutné nastavit SSPROP_IRowsetFastLoad vlastnost v rgPropertySetsparametrU IOpenRowset::OpenRowset metoda; jinak volání metody OpenRowset vrátí E_NOINTERFACE.
Povolení relace pro hromadnou kopírování omezuje podporu zprostředkovatele OLE DB nativního klienta SYSTÉMU SQL Server pro rozhraní v relaci. Relace s podporou hromadného kopírování zveřejňuje pouze následující rozhraní:
IDBSchemaRowset
IGetDataSource
IOpenRowset
ISupportErrorInfo
ITransactionJoin
Chcete-li zakázat vytváření sad řádků s podporou hromadného kopírování a způsobit, že se relace zprostředkovatele OLE DB nativního klienta SQL Serveru vrátí ke standardnímu zpracování, resetujte SSPROP_ENABLEFASTLOAD na VARIANT_FALSE.
IRowsetFastLoad – sady řádků
Zprostředkovatel OLE DB nativního klienta SQL Serveru hromadně kopíruje sady řádků pouze pro zápis, ale zpřístupňují rozhraní, která příjemci umožňují určit strukturu tabulky SYSTÉMU SQL Server. V sadě řádků zprostředkovatele OLE DB nativního klienta SQL Serveru s podporou hromadného kopírování jsou vystavena následující rozhraní:
IAccessor
IColumnsInfo
IColumnsRowset
IConvertType
IRowsetFastLoad
IRowsetInfo
ISupportErrorInfo
Vlastnosti specifické pro zprostředkovatele SSPROP_FASTLOADOPTIONS, SSPROP_FASTLOADKEEPNULLS a SSPROP_FASTLOADKEEPIDENTITY řídí chování sady řádků zprostředkovatele OLE DB nativního klienta SYSTÉMU SQL Server. Vlastnosti jsou zadány v rgProperties člen rgPropertySetsIOpenRowset člen parametru.
| ID nemovitosti | Popis |
|---|---|
| SSPROP_FASTLOADKEEPIDENTITY | Sloupec: Ne R/W: Čtení/zápis Typ: VT_BOOL Výchozí: VARIANT_FALSE Popis: Udržuje hodnoty identity zadané příjemcem. VARIANT_FALSE: Sql Server generuje hodnoty sloupce identity v tabulce SQL Serveru. Zprostředkovatel OLE DB nativního klienta SQL Serveru ignoruje všechny hodnoty vázané na sloupec. VARIANT_TRUE: Příjemce vytvoří vazbu na přístupový objekt, který poskytuje hodnotu sloupce identity SQL Serveru. Vlastnost identity není k dispozici u sloupců, které přijímají hodnotu NULL, takže příjemce poskytuje jedinečnou hodnotu pro každé volání IRowsetFastLoad::Insert . |
| SSPROP_FASTLOADKEEPNULLS | Sloupec: Ne R/W: Čtení/zápis Typ: VT_BOOL Výchozí: VARIANT_FALSE Popis: Udržuje hodnotu NULL pro sloupce s omezením DEFAULT. Ovlivňuje pouze sloupce SQL Serveru, které přijímají hodnotu NULL a mají použité výchozí omezení. VARIANT_FALSE: SQL Server vloží výchozí hodnotu sloupce, když příjemce zprostředkovatele OLE DB nativního klienta SYSTÉMU SQL Server vloží řádek obsahující hodnotu NULL pro sloupec. VARIANT_TRUE: SQL Server vloží hodnotu NULL pro hodnotu sloupce, když příjemce zprostředkovatele OLE DB nativního klienta SYSTÉMU SQL Server vloží řádek obsahující hodnotu NULL pro sloupec. |
| SSPROP_FASTLOADOPTIONS | Sloupec: Ne R/W: Čtení/zápis Typ: VT_BSTR Výchozí hodnota: žádná Popis: Tato vlastnost je stejná jako -h "hint[,... n]" možnost nástroje bcp . Následující řetězce lze použít jako možnosti při hromadném kopírování dat do tabulky. ORDER(column[ASC | DESC][,... n]): Pořadí řazení dat v datovém souboru. Výkon hromadného kopírování se zlepší, pokud je načtený datový soubor seřazený podle clusterovaného indexu v tabulce. = ROWS_PER_BATCHbb: Počet řádků dat na dávku (jako bb). Server optimalizuje hromadné zatížení podle hodnoty bb. Ve výchozím nastavení je ROWS_PER_BATCH neznámý. = KILOBYTES_PER_BATCHcc: Počet kilobajtů (KB) dat na dávku (jako kopie). Ve výchozím nastavení je KILOBYTES_PER_BATCH neznámý. TABLOCK: Zámek na úrovni tabulky se získá po dobu trvání operace hromadného kopírování. Tato možnost výrazně zvyšuje výkon, protože podržení zámku pouze po dobu trvání operace hromadného kopírování snižuje kolize zámků v tabulce. Tabulku může načíst více klientů současně, pokud tabulka neobsahuje žádné indexy a není zadán TABLOCK . Ve výchozím nastavení je chování uzamčení určeno zámkem tabulky možností tabulky při hromadném načtení. CHECK_CONSTRAINTS: Během operace hromadného kopírování se kontrolují všechna omezení table_name . Ve výchozím nastavení se omezení ignorují. FIRE_TRIGGER: SQL Server používá pro triggery správu verzí řádků a ukládá verze řádků do úložiště verzí v databázi tempdb. Optimalizace hromadného protokolování jsou proto k dispozici i v případě, že jsou povolené triggery. Před hromadným importem dávky s velkým počtem řádků s povolenými triggery možná budete muset rozšířit velikost databáze tempdb. |
Použití operací hromadného kopírování založeného na souborech
Zprostředkovatel OLE DB nativního klienta SQL Serveru implementuje rozhraní IBCPSession , aby zpřístupnil podporu pro operace hromadného kopírování založené na souborech SQL Serveru. Rozhraní IBCPSession implementuje IBCPSession::BCPColFmt, IBCPSession::BCPColumns, IBCPSession::BCPControl, IBCPSession::BCPDone, IBCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt a IBCPSession::BCPWriteFmt metody.
Ovladač ODBC nativního klienta SQL Serveru
Ovladač ODBC nativního klienta SQL Serveru udržuje stejnou podporu pro operace hromadného kopírování, které byly součástí předchozích verzí ovladače ODBC systému SQL Server. Informace o operacích hromadného kopírování pomocí ovladače ODBC nativního klienta SQL Serveru naleznete v tématu Provádění operací hromadného kopírování (ODBC).
Viz také
funkce nativního klienta SQL Serveru
Vlastnosti zdroje dat (OLE DB)
hromadný import a export dat (SQL Server)
IRowsetFastLoad (OLE DB)
IBCPSession (OLE DB)
Optimalizace výkonu hromadného importu