Zdieľať cez


Konfigurácia databázy SQL v kopírovacej aktivite (Preview)

Tento článok popisuje, ako použiť aktivitu kopírovania v kanáli na kopírovanie údajov z a do databázy SQL.

Podporovaná konfigurácia

Ak chcete nastaviť každú kartu v časti Aktivita kopírovania, prejdite do nasledujúcich sekcií.

Všeobecné

Ak chcete nakonfigurovať kartu Všeobecné nastavenia , pozrite si Všeobecné nastavenia pokyny.

Zdroj

Pre databázu SQL na karte Source kopírovania sú podporované nasledujúce vlastnosti.

Snímka obrazovky zobrazujúca kartu zdroj a zoznam vlastností.

Nasledujúce vlastnosti sa vyžadujú:

  • pripojenia: Vyberte existujúcu databázu SQL odkazujúc na krok v tomto článku .

  • Použitiedotazu: Môžete vybrať tabuľku, dotazov alebo uloženú procedúru. Nasledujúci zoznam popisuje konfiguráciu každého nastavenia:

    • tabuľka: Zadajte názov databázy SQL, ktorá sa má čítať údaje. Vyberte existujúcu tabuľku v rozbaľovacom zozname alebo vyberte položky Zadajte manuálne a zadajte schému a názov tabuľky.

    • dotazu: Zadajte vlastný dotaz SQL na čítanie údajov. Príkladom je select * from MyTable. Môžete tiež vybrať ikonu ceruzky a upraviť ju v editore kódu.

      Snímka obrazovky zobrazujúca výber dotazu.

    • uložená procedúra: Z rozbaľovacieho zoznamu vyberte uloženú procedúru.

V časti Rozšírenémôžete zadať nasledujúce polia:

  • časový limit dotazu (minúty): Zadajte časový limit pre vykonanie príkazu dotazu, predvolená hodnota je 120 minút. Ak je parameter nastavený pre túto vlastnosť, povolené hodnoty sú časové rozpätie, napríklad 02:00:00 (120 minút).

    Snímka obrazovky zobrazujúca nastavenia časového limitu dotazu.

  • úroveň izolácie: Určuje správanie uzamknutia transakcií pre zdroj SQL. Povolené hodnoty sú: Čítanie spáchaných, ČítanieopakovateľnéhoSerializovateľnéalebo snímka. Ďalšie podrobnosti nájdete v IsolationLevel Enum.

    Snímka obrazovky zobrazujúca nastavenia úrovne izolácie.

  • možnosti Oblasti: Zadajte možnosti rozdelenia údajov používané na načítanie údajov z databázy SQL. Povolené hodnoty sú: Žiadne (predvolené), Fyzické oblastitabuľky a Dynamický rozsah. Keď je povolená možnosť oblasti (to znamená, že nie je Žiadny), úroveň paralelného načítavania súbežného načítavania údajov z databázy SQL je riadená Stupne paralelného spracovania na karte s nastaveniami aktivity kopírovania.

    • Žiadny: Vyberte toto nastavenie, aby sa nepoužila oblasť.

    • Fyzické oblasti tabuľky: Pri použití fyzickej oblasti sa stĺpec a mechanizmus oblasti automaticky určia na základe vašej definície fyzickej tabuľky.

    • Dynamický rozsah: Pri použití dotazu so súbežne povoleným rozsahom je potrebný parameter oblasti rozsahu (?DfDynamicRangePartitionCondition). Vzorový dotaz: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Názov stĺpca Oblasť: Zadajte názov zdrojového stĺpca do celočíselného čísla alebo typu dátum/dátum a čas (int, smallint, bigint, date, smalldatetime, datetime, datetime2alebo datetimeoffset), ktorý sa používa na rozdelenie rozsahu pre paralelnú kópiu. Ak nie je zadaný, index alebo primárny kľúč tabuľky sa automaticky rozpozná a použije ako stĺpec oblasti.

        Ak na načítanie zdrojových údajov použijete dotaz, môžete ?DfDynamicRangePartitionCondition klauzulu WHERE. Pozrite si napríklad časť Paralelná kópia z databázy SQL.

      • rozdelenie hornej väzby oblasti: Zadajte maximálnu hodnotu stĺpca oblasti na rozdelenie rozsahu oblastí. Táto hodnota sa používa na rozhodnutie o kroku rozdelenia, nie na filtrovanie riadkov v tabuľke. Všetky riadky v tabuľke alebo výsledku dotazu sa rozdelia a skopírujú. Ak nie je zadaná, aktivita kopírovaním automaticky zistí hodnotu. Pozrite si napríklad časť Paralelná kópia z databázy SQL.

      • rozdelenie dolnej väzby oblasti: Zadajte minimálnu hodnotu stĺpca oblasti pre rozdelenie rozsahu oblastí. Táto hodnota sa používa na rozhodnutie o kroku rozdelenia, nie na filtrovanie riadkov v tabuľke. Všetky riadky v tabuľke alebo výsledku dotazu sa rozdelia a skopírujú. Ak nie je zadaná, aktivita kopírovaním automaticky zistí hodnotu. Pozrite si napríklad časť Paralelná kópia z databázy SQL.

  • Ďalšie stĺpce: Pridajte ďalšie stĺpce údajov na ukladanie relatívnej cesty alebo statickej hodnoty zdrojových súborov. Pre druhý sa podporuje výraz. Ďalšie informácie nájdete v Pridanie ďalších stĺpcov počas kopírovania.

Cieľ

Pre databázu SQL sa podporujú nasledujúce vlastnosti na karte kopírovania Cieľ.

Snímka obrazovky zobrazujúca kartu Cieľ.

Nasledujúce vlastnosti sa vyžadujú:

  • pripojenia: Vyberte existujúcu databázu SQL odkazujúc na krok v tomto článku .

  • možnosť Tabuľka: Vyberte možnosti Použiť existujúce alebo Automatické vytváranie tabuľky.

    • Ak vyberiete možnosť Použiť existujúce:

      • tabuľka: Zadajte názov databázy SQL, ktorá sa má zapisovať údaje. Vyberte existujúcu tabuľku v rozbaľovacom zozname alebo vyberte položky Zadajte manuálne a zadajte schému a názov tabuľky.
    • Ak vyberiete možnosť Automatické vytvorenie tabuľky:

      • tabuľka: Automaticky sa vytvorí tabuľka (ak neexistuje) v zdrojovej schéme, ktorá nie je podporovaná, keď sa uložená procedúra používa ako správanie pri zápise.

V časti Rozšírenémôžete zadať nasledujúce polia:

  • správanie pri písaní: Definuje správanie pri zápise, keď je zdrojom súbory z úložiska údajov na základe súborov. Môžete si vybrať Vložiť, Upsert alebo Uložená procedúra.

    Snímka obrazovky s kartou správania pri písaní.

    • Vložiť: Túto možnosť vyberte, ak sa zdrojové údaje vkladali.

    • Upsert: Túto možnosť vyberte, ak zdrojové údaje obsahujú vkladáky aj aktualizácie.

      • Ako dočasnú tabuľku pre upsert zadajte, či sa má použiť globálna dočasná tabuľka alebo fyzická tabuľka, použiteTempDB. Služba predvolene používa ako dočasnú globálnu tabuľku dočasnú tabuľku a je toto políčko začiarknuté.
        Ak zapíšete veľké množstvo údajov do databázy SQL, zrušte začiarknutie tejto možnosti a zadajte názov schémy, podľa ktorej Data Factory vytvorí vnášacu tabuľku na načítanie upstreamových údajov a automatické čistenie po dokončení. Uistite sa, že používateľ má povolenie na vytvorenie tabuľky v databáze a povolenie na zmenu schémy. Ak parameter nie je zadaný, ako pracovná os sa použije globálna dočasná tabuľka.

        Snímka obrazovky zobrazujúca výber položky Použiť TempDB.

      • Vyberte schému databázy používateľa: Keď nie je vybratá použiť databázu TempDB, zadajte názov schémy, pod ktorou data factory vytvorí vnášacu tabuľku na načítanie upstreamových údajov a po dokončení ich automaticky vyčistí. Uistite sa, že máte povolenie na vytvorenie tabuľky v databáze a povolenia na zmenu schémy.

        Nota

        Musíte mať povolenie na vytváranie a odstraňovanie tabuliek. Predvolene bude dočasná tabuľka zdieľať rovnakú schému ako cieľová tabuľka.

        Snímka obrazovky zobrazujúca výber položky Použiť TempDB.

      • kľúčové stĺpce: Vyberte, ktorý stĺpec sa používa na určenie, či riadok zo zdroja zodpovedá riadku z cieľa.

    • názov uloženej procedúry: Z rozbaľovacieho zoznamu vyberte uloženú procedúru.

  • zámokhromadnej vloženia tabuľky: Vyberte Áno alebo Nie. Toto nastavenie môžete použiť na zlepšenie výkonu kopírovania počas operácie hromadného vkladania do tabuľky bez indexu od viacerých klientov. Ďalšie informácie nájdete v HROMADNÉ VLOŽENIE (Transact-SQL).

  • pred kopírovaním skriptu: Zadajte skript pre aktivitu kopírovania, ktorá sa má spustiť pred napísaním údajov do cieľovej tabuľky pri každom spustení. Pomocou tejto vlastnosti môžete vyčistiť vopred načítané údaje.

  • časový limit dávky zápisu: Zadajte čas čakania na dokončenie operácie vkladania dávky pred uplynutím časového limitu. Povolená hodnota je časové rozpätie. Predvolená hodnota je 00:30:00 (30 minút).

  • veľkosť dávky zapisovania: Zadajte počet riadkov, ktoré sa majú vložiť do tabuľky SQL na dávku. Povolená hodnota je celé číslo (počet riadkov). Služba predvolene dynamicky určuje vhodnú veľkosť dávky na základe veľkosti riadka.

  • Maximálny počet súbežných pripojení: Zadajte hornú hranicu súbežných pripojení vytvorených s ukladacím priestorom údajov počas spustenia aktivity. Zadajte hodnotu iba vtedy, keď chcete obmedziť súbežné pripojenia.

Mapovanie

Ak pri konfigurácii karty Mapovanie nepoužite databázu SQL s cieľom automatického vytvárania tabuľky, prejdite na Mapovanie.

Ak použijete databázu SQL s cieľom automatického vytvárania tabuliek s výnimkou konfigurácie v Mapping, môžete upraviť typ pre cieľové stĺpce. Po výbere importovať schémymôžete zadať typ stĺpca vo svojom cieli.

Napríklad typ pre ID stĺpci v zdroji je int a môžete ho zmeniť na typ float pri mapovaní na cieľový stĺpec.

Snímka obrazovky znázorňujúca typ priradenia cieľového stĺpca.

Nastavenia

Ak chcete Nastavenia konfigurácii karty, prejdite do Konfigurovať ďalšie nastavenia na karte Nastavenia.

Paralelná kópia z databázy SQL

Konektor databázy SQL v kopírovanej aktivite poskytuje vstavané rozdelenie údajov na kopírovanie údajov paralelne. Možnosti rozdelenia údajov nájdete na karte Source aktivity kopírovania.

Keď povolíte rozdeľovanie kópie, kopírovanie aktivity spustí paralelné dotazy voči zdroju databázy SQL a načíta údaje podľa oblastí. Paralelný stupeň je ovládaný Degree of copy parallelism na karte Nastavenia kopírovania aktivity. Ak ste napríklad nastavili Stupeň paralelného kopírovania na štyri, služba súbežne vygeneruje a spustí štyri dotazy na základe zadanej možnosti a nastavení oblasti a každý dotaz načíta časť údajov z databázy SQL.

Odporúčame povoliť paralelnú kópiu s oblasťou údajov najmä vtedy, keď načítate veľké množstvo údajov z databázy SQL. Nižšie sú uvedené navrhované konfigurácie pre rôzne scenáre. Pri kopírovaní údajov do úložiska údajov založených na súbore sa odporúča zapísať do priečinka ako viacero súborov (zadať iba názov priečinka). V takom prípade je výkon lepší ako zapisovanie do jedného súboru.

Scenár Navrhované nastavenia
Úplné načítanie z veľkej tabuľky pomocou fyzických oblastí. možnosť Oblasť: Fyzické oblasti tabuľky.

Počas spustenia služba automaticky rozpozná fyzické oblasti a skopíruje údaje podľa oblastí.

Ak chcete skontrolovať, či tabuľka obsahuje fyzickú oblasť alebo nie, môžete použiť tento dotaz.
Úplné načítanie z veľkej tabuľky bez fyzických oblastí, zatiaľ čo pri celočíselnom stĺpci alebo stĺpci typu datetime na rozdelenie údajov. možnosti oblasti: Oblasť dynamického rozsahu.
stĺpca Oblasť (voliteľné): Zadajte stĺpec použitý na rozdelenie údajov. Ak parameter nie je zadaný, použije sa stĺpec indexu alebo primárneho kľúča.
Oblasť horná hranica a oblasti dolná hranica (voliteľné): Určite, či chcete určiť krok rozdelenia. Na filtrovanie riadkov v tabuľke to však nie je možné. Všetky riadky v tabuľke sa rozdelia a skopírujú. Ak parameter nie je zadaný, aktivita kopírovania automaticky rozpozná hodnoty a môže to trvať dlho v závislosti od hodnôt MIN a MAX. Odporúča sa poskytnúť hornú väzbu a dolnú väzbu.

Ak má napríklad stĺpec oblasti "ID" hodnoty v rozsahu od 1 do 100 a spodnú hranicu nastavíte ako 20 a hornú hranicu 80, s paralelnou kópiou ako 4 služba načíta údaje podľa 4 oblastí – ID v rozsahu <=20, [21, 50], [51, 80] a >=81.
Načítajte veľké množstvo údajov pomocou vlastného dotazu bez fyzických oblastí, zatiaľ čo so stĺpcom celé číslo alebo dátum/dátum a čas na rozdelenie údajov. možnosti oblasti: Oblasť dynamického rozsahu.
dotazu: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
stĺpca Oblasť: Zadajte stĺpec použitý na rozdelenie údajov.
Oblasť horná hranica a oblasti dolná hranica (voliteľné): Určite, či chcete určiť krok rozdelenia. Toto nie je pre filtrovanie riadkov v tabuľke, všetky riadky vo výsledku dotazu sa rozdelia a skopírujú. Ak nie je zadaná, aktivita kopírovaním automaticky zistí hodnotu.

Ak má napríklad stĺpec oblasti "ID" hodnoty v rozsahu od 1 do 100 a spodnú hranicu nastavíte ako 20 a hornú hranicu ako 80, s paralelnou kópiou ako 4 služba načíta údaje podľa 4 oblastí- ID v rozsahu <=20, [21, 50], [51, 80] a >=81.

Tu sú ďalšie vzorové dotazy pre rôzne scenáre:
• Dotaz na celú tabuľku:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• Dotaz z tabuľky s výberom stĺpca a ďalšími filtrami klauzuly where-clause:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Dotaz s poddotazmi:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Dotaz s oblasťou v poddotaze:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Najvhodnejšie postupy na načítanie údajov pomocou možnosti oblasti:

  • Vyberte rozlišovací stĺpec ako stĺpec oblasti (napríklad primárny kľúč alebo jedinečný kľúč), aby sa predišlo skresleniu údajov.
  • Ak tabuľka obsahuje vstavanú oblasť, na získanie lepšieho výkonu použite možnosť oblasti fyzické oblasti tabuľky.

Vzorový dotaz na kontrolu fyzickej oblasti

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id 
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id 
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id 
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id 
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Ak tabuľka obsahuje fyzickú oblasť, zobrazí sa časť HasPartition ako "áno" ako nasledujúca.

Snímka obrazovky s výsledkom dotazu SQL.

Súhrn tabuľky

Nasledujúce tabuľky obsahujú ďalšie informácie o aktivite kopírovania v databáze SQL.

Zdroj

Meno Popis Hodnota Požadovaný Vlastnosť skriptu JSON
pripojenia Pripojenie k zdrojového úložisku údajov. <pripojenie> Áno pripojenie
Použitie dotazov Spôsob čítania údajov. Použite tabuľkové na čítanie údajov zo zadanej tabuľky alebo použite dotazu na čítanie údajov pomocou dotazov SQL. tabuliek
dotazov,
uloženej procedúry
Áno /
na tabuľky
názov schémy Názov schémy. < názov schémy > Nie schéma
názov tabuľky Názov tabuľky. < názov tabuľky > Nie tabuľka
na dotazov
dotazov Zadajte vlastný dotaz SQL na čítanie údajov. Napríklad: SELECT * FROM MyTable. < > dotazov SQL Nie sqlReaderQuery
na uloženú procedúru
názov uloženej procedúry Názov uloženej procedúry. < názvu uloženej procedúry > Nie sqlReaderStoredProcedureName
časový limit dotazu (minúty) Časový limit pre vykonanie príkazu dotazu je predvolene 120 minút. Ak je parameter nastavený pre túto vlastnosť, povolené hodnoty sú časové rozpätie, napríklad 02:00:00 (120 minút). časové rozpätie Nie queryTimeout (časový limit dotazu)
úroveň izolácie Určuje správanie uzamknutia transakcií pre zdroj SQL. • Prečítajte si zaviazala
• Čítať bez vynechania
• Opakovateľný čitateľný
• Serializovateľné
•Snímka
Nie isolationLevel:
• ReadCommitted
• ReadUncommitted
• Opakovateľné Čítané
• Serializovateľné
•Snímka
možnosti Oblasti Možnosti rozdelenia údajov používané na načítanie údajov z databázy SQL. •Žiadny
• Fyzické oblasti tabuľky
• Dynamický rozsah
Nie partition (oblasť)Možnosť:
• Fyzické oddielyTabuľky
• Dynamický rozsah
Pre Dynamický rozsah
názov stĺpca Oblasti Názov zdrojového stĺpca vo formáte celé číslo alebo typ dátum/dátum a čas (int, smallint, bigint, date, smalldatetime, datetime, datetime2alebo datetimeoffset), ktorý sa používa rozdelenie rozsahu pre paralelnú kópiu. Ak nie je zadaný, index alebo primárny kľúč tabuľky sa automaticky rozpozná a použije ako stĺpec oblasti. Ak na načítanie zdrojových údajov použijete dotaz, môžete ?DfDynamicRangePartitionCondition klauzulu WHERE. < názvov stĺpcov oblastí > Nie partitionColumnName
s hornou väzbou oblasti Maximálna hodnota stĺpca oblasti na rozdelenie rozsahu oblastí. Táto hodnota sa používa na rozhodnutie o kroku rozdelenia, nie na filtrovanie riadkov v tabuľke. Všetky riadky v tabuľke alebo výsledku dotazu sa rozdelia a skopírujú. Ak nie je zadaná, aktivita kopírovaním automaticky zistí hodnotu. < > oblasti Nie partitionUpperBound
dolnej väzby oblasti Minimálna hodnota stĺpca oblasti na rozdelenie rozsahu oblastí. Táto hodnota sa používa na rozhodnutie o kroku rozdelenia, nie na filtrovanie riadkov v tabuľke. Všetky riadky v tabuľke alebo výsledku dotazu sa rozdelia a skopírujú. Ak nie je zadaná, aktivita kopírovaním automaticky zistí hodnotu. < dolnej časti oblasti > Nie partitionLowerBound
ďalšie stĺpce Pridajte ďalšie stĺpce údajov na ukladanie relatívnej cesty alebo statickej hodnoty zdrojových súborov. Pre druhý sa podporuje výraz. •Meno
•Hodnota
Nie additionalColumns:
•meno
•hodnota

Cieľ

Meno Popis Hodnota Požadovaný Vlastnosť skriptu JSON
pripojenia Vaše pripojenie do cieľového úložiska údajov. <pripojenie > Áno pripojenie
možností Tabuľka Vaša cieľová tabuľka údajov. Vyberte si z Use existing or Auto create table. • Použiť existujúce
• Automaticky vytvoriť tabuľku
Áno schéma
tabuľka
správania pri písaní Definuje správanie pri zápise, keď je zdrojom súbory z úložiska údajov na základe súborov. •Vložiť
• Upsert
• Uložená procedúra
Nie writeBehavior:
•vložiť
• upsert
• sqlWriterStoredProcedureName
zámok hromadnej vloženia tabuľky Toto nastavenie môžete použiť na zlepšenie výkonu kopírovania počas operácie hromadného vkladania do tabuľky bez indexu od viacerých klientov. Áno alebo Nie (predvolené) Nie sqlWriterUseTableLock:
true alebo false (predvolené)
pre Upsert
použitie databázy TempDB Určuje, či sa má použiť globálna dočasná tabuľka alebo fyzická tabuľka ako dočasná tabuľka pre upsert. selected (predvolené) alebo nevybrané Nie useTempDB:
true (predvolené) alebo false
kľúčových stĺpcov Vyberte stĺpec, ktorý sa používa na určenie toho, či sa riadok zo zdroja zhoduje s riadkom z cieľa. < > kľúča Nie Kľúče
na uloženú procedúru
názov uloženej procedúry Táto vlastnosť je názov uloženej procedúry, ktorá prečíta údaje zo zdrojovej tabuľky. Posledným príkazom SQL musí byť príkaz SELECT v uloženej procedúre. < názvom uloženej procedúry > Nie sqlWriterStoredProcedureName
skriptov pred kopírovaním Skript na kopírovanie aktivity, ktorý sa má spustiť pred zápisom údajov do cieľovej tabuľky v každom spustení. Pomocou tejto vlastnosti môžete vyčistiť vopred načítané údaje. < > skriptov pred kopírovaním
(reťazec)
Nie preCopyScript
časový limit pri zápise Čas čakania na dokončenie operácie vkladania dávky pred uplynutím limitu. Povolená hodnota je časové rozpätie. Predvolená hodnota je 00:30:00 (30 minút). časové rozpätie Nie writeBatchTimeout
veľkosť dávky zápisu Počet riadkov, ktoré sa majú vložiť do tabuľky SQL na každú dávku. Služba predvolene dynamicky určuje vhodnú veľkosť dávky na základe veľkosti riadka. <počet riadkov>
(celé číslo)
Nie writeBatchSize
max. súbežných pripojení Horná hranica súbežných pripojení vytvorených do ukladacieho priestoru údajov počas spustenia aktivity. Zadajte hodnotu iba vtedy, keď chcete obmedziť súbežné pripojenia. <horná hranica súbežných pripojení>
(celé číslo)
Nie maxConcurrentConnections