Sdílet prostřednictvím


Konfigurace databáze SQL v aktivitě kopírování (Preview)

Tento článek popisuje, jak pomocí aktivity kopírování v rámci pipeline kopírovat data z/do databáze SQL.

Podporovaná konfigurace

Nastavení každé záložky v rámci kopírovací aktivity naleznete v následujících oddílech.

Obecné

Přečtěte si pokyny k obecným nastavením, abyste mohli nakonfigurovat kartu Obecné nastavení.

Zdroj

Pro databázi SQL na kartě Zdroj aktivity kopírování jsou podporovány následující vlastnosti.

Snímek obrazovky zobrazující kartu zdroje a seznam vlastností

Jsou vyžadovány následující vlastnosti:

  • Připojení: Vyberte existující databázi SQL odkazující na krok v tomto článku.

  • Použijtedotaz: Můžete zvolit tabulku, dotaz, nebo uloženou proceduru. Následující seznam popisuje konfiguraci jednotlivých nastavení:

    • Tabulka: Zadejte název databáze SQL pro čtení dat. V rozevíracím seznamu zvolte existující tabulku nebo ručně vyberte Enter a zadejte název schématu a tabulky.

    • dotaz: Zadejte vlastní dotaz SQL pro čtení dat. Příklad: select * from MyTable. Nebo vyberte ikonu tužky, která se má upravit v editoru kódu.

      Snímek obrazovky znázorňující výběr dotazu

    • Uložená procedura: V rozevíracím seznamu vyberte uloženou proceduru.

V části Upřesnit můžete zadat následující pole:

  • vypršení časového limitu dotazu (minuty): Zadejte časový limit pro spuštění příkazu dotazu, výchozí hodnota je 120 minut. Pokud je pro tuto vlastnost nastaven parametr, jsou povolené hodnoty časový rozsah, například 02:00:00 (120 minut).

    Snímek obrazovky s nastavením časového limitu dotazu

  • úroveň izolace: Určuje chování uzamčení transakce pro zdroj SQL. Povolené hodnoty jsou: Číst potvrzené, Číst nepotvrzené, Opakovatelné čtení, Serializovatelné nebo Snímek. Další podrobnosti najdete v výčtu IsolationLevel .

    Snímek obrazovky s nastavením úrovně izolace

  • Možnost oddílu: Zadejte možnosti dělení dat používané k načtení dat z databáze SQL. Povolené hodnoty jsou: Žádný (výchozí), Fyzické oddíly tabulkya Dynamický rozsah. Pokud je povolena možnost oddílu (tj. ne žádná), stupeň paralelismu pro souběžné načítání dat z databáze SQL je řízen položkou stupeň paralelismu při kopírování na kartě nastavení aktivity kopírování.

    • Žádné: Toto nastavení vyberte, pokud nechcete oddíl používat.

    • Fyzické oddíly tabulky: Při použití fyzického oddílu se sloupec a mechanismus oddílu automaticky určují na základě definice fyzické tabulky.

    • Dynamický rozsah: Při použití dotazu s povoleným paralelním povolením je potřeba parametr oddílu rozsahu(?DfDynamicRangePartitionCondition). Ukázkový dotaz: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Název sloupce oddílu: Zadejte název zdrojového sloupce v celočíselném nebo typu date/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2, nebo datetimeoffset), který se používá při dělení rozsahu pro paralelní kopírování. Pokud není specifikováno, index nebo primární klíč tabulky se automaticky rozpozná a použije jako partiční sloupec.

        Pokud k načtení zdrojových dat použijete dotaz, zahrňte ?DfDynamicRangePartitionCondition do klauzule WHERE. Příklad najdete v části Paralelní kopírování z databáze SQL.

      • Horní mez oddílu: Zadejte maximální hodnotu sloupce oddílu pro rozdělení rozsahu oddílů. Tato hodnota se používá k určení kroku dělení, nikoli k filtrování řádků v tabulce. Všechny řádky v tabulce nebo výsledku dotazu se rozdělí a zkopírují. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu. Příklad najdete v části Paralelní kopírování z databáze SQL.

      • Dolní mez partice: Zadejte minimální hodnotu sloupce partice pro rozdělení rozsahu partií. Tato hodnota se používá k určení kroku dělení, nikoli k filtrování řádků v tabulce. Všechny řádky v tabulce nebo výsledku dotazu se rozdělí a zkopírují. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu. Příklad najdete v části Paralelní kopírování z databáze SQL.

  • Další sloupce: Přidejte další sloupce dat pro ukládání relativní cesty nebo statické hodnoty zdrojových souborů. Výraz je podporován pro druhý z uvedených. Další informace najdete v tématu Přidání dalších sloupců během kopírování.

Cíl

Následující vlastnosti jsou podporovány pro SQL databázi na kartě Cíl kopírovací aktivity.

Snímek obrazovky zobrazující kartu Cíl.

Jsou vyžadovány následující vlastnosti:

  • Připojení: Vyberte existující databázi SQL odkazující na krok v tomto článku.

  • Možnost Tabulka: Vyberte možnost Použít existující nebo automaticky vytvořit tabulku.

    • Pokud vyberete Použít existující:

      • Tabulka: Zadejte název databáze SQL pro zápis dat. V rozevíracím seznamu zvolte existující tabulku nebo ručně vyberte Enter a zadejte název schématu a tabulky.
    • Pokud vyberete možnost Automaticky vytvořit tabulku:

      • Tabulka: Automaticky vytvoří tabulku (pokud neexistuje) ve zdrojovém schématu, která není podporována při použití uložené procedury jako chování zápisu.

V části Upřesnit můžete zadat následující pole:

  • chování při zápisu: Definuje chování zápisu, pokud je zdrojem soubory ze souborového úložiště dat. Můžete zvolit Vložit, Upsert nebo Uložená procedura.

    Snímek obrazovky s kartou Chování při zápisu

    • Vložit: Tuto možnost zvolte, pokud zdrojová data obsahují vložky.

    • Upsert: Tuto možnost zvolte, pokud zdrojová data obsahují vložení i aktualizace.

      • Použít TempDB: Určete, zda chcete použít globální dočasnou tabulku nebo fyzickou tabulku jako mezitabuli pro upsert. Ve výchozím nastavení služba používá jako dočasnou tabulku globální dočasnou tabulku a toto políčko je zaškrtnuté.
        Pokud do databáze SQL zapíšete velké množství dat, zrušte zaškrtnutí tohoto políčka a zadejte název schématu, pod kterým služba Data Factory vytvoří pracovní tabulku pro načtení nadřazených dat a automatické vyčištění po dokončení. Ujistěte se, že uživatel má v databázi oprávnění k vytvoření tabulky, a upravte oprávnění ke schématu. Pokud není specifikováno, použije se globální tabulka pro dočasná data jako přípravná.

        Snímek obrazovky znázorňující výběr možnosti Použít databázi tempDB

      • Výběr schématu databáze uživatele: Pokud není vybraná možnost Použít databázi tempDB , zadejte název schématu, pod kterým služba Data Factory vytvoří pracovní tabulku pro načtení nadřazených dat a automaticky je po dokončení vyčistí. Ujistěte se, že máte v databázi oprávnění k vytvoření tabulky, a upravte oprávnění ke schématu.

        Poznámka:

        Musíte mít oprávnění k vytváření a odstraňování tabulek. Ve výchozím nastavení bude dočasná tabulka sdílet stejné schéma jako cílová tabulka.

        snímek obrazovky zobrazující možnost Nepoužívat databázi TempDB

      • Klíčové sloupce: Zvolte, který sloupec se použije k určení, jestli řádek ze zdroje odpovídá řádku z cíle.

    • Název uložené procedury: V rozevíracím seznamu vyberte uloženou proceduru.

  • Zámek hromadného vložení tabulky: Zvolte Ano nebo Ne. Toto nastavení použijte ke zlepšení výkonu kopírování během hromadné operace vložení v tabulce bez indexu z více klientů. Pro více informací přejděte na BULK INSERT (Transact-SQL)

  • Skript předběžného kopírování: Zadejte skript pro aktivitu kopírování, který se má spustit před zápisem dat do cílové tabulky v každém spuštění. Tuto vlastnost můžete použít k vyčištění předem načtených dat.

  • Časový limit dávkového zápisu: Zadejte dobu čekání na dokončení operace dávkového vložení, než vyprší časový limit. Povolená hodnota je časový úsek. Výchozí hodnota je 00:30:00 (30 minut).

  • Počet řádků pro dávku: Zadejte počet řádků, které se mají vložit do tabulky SQL na jednu dávku. Povolená hodnota je celé číslo (počet řádků). Ve výchozím nastavení služba dynamicky určuje odpovídající velikost dávky na základě velikosti řádku.

  • maximální počet souběžných připojení: Zadejte horní limit souběžných připojení vytvořených k úložišti dat během spuštění aktivity. Zadejte hodnotu pouze v případech, kdy chcete omezit souběžná připojení.

Mapování

Pokud pro konfiguraci záložky Mapování nepoužíváte SQL databázi s automatickým vytvářením tabulek jako cílový bod, přejděte do části Mapování.

Pokud jako cíl použijete SQL databázi s automatickým vytvořením tabulky, kromě konfigurace v mapování můžete upravit typ pro cílové sloupce. Po výběru schémat importu můžete zadat typ sloupce v cíli.

Například typ sloupce ID ve zdroji je int a můžete jej přiřadit jako typ float do cílového sloupce.

Snímek obrazovky s mapováním typu cílového sloupce

Nastavení

Pro konfiguraci záložky Nastavení přejděte na Upravit další nastavení v záložce Nastavení.

Paralelní kopírování z databáze SQL

Konektor databáze SQL v aktivitě kopírování poskytuje integrované dělení dat pro paralelní kopírování dat. Možnosti rozdělení dat najdete na kartě Zdroj aktivity kopírování.

Když povolíte dělené kopírování, aktivita kopírování spouští paralelní dotazy na zdroj databáze SQL za účelem načtení dat podle oddílů. Paralelní stupeň je řízen stupněm paralelismu kopírování na kartě nastavení aktivity kopírování. Pokud například nastavíte stupeň paralelismu kopírování na čtyři, služba souběžně vygeneruje a spouští čtyři dotazy na základě zadané možnosti a nastavení oddílu a každý dotaz načte část dat z vaší databáze SQL.

Doporučujeme povolit paralelní kopírování s dělením dat, zejména pokud načítáte velké množství dat z databáze SQL. Následující konfigurace jsou navržené pro různé scénáře. Při kopírování dat do souborového úložiště dat se doporučuje zapisovat do složky jako více souborů (zadat pouze název složky), v takovém případě je výkon lepší než zápis do jednoho souboru.

Scénář Navrhovaná nastavení
Úplné načtení z velké tabulky s fyzickými oddíly Možnost oddílení: Fyzické oddíly tabulky.

Během provádění služba automaticky rozpozná fyzické oddíly a kopíruje data podle oddílů.

Chcete-li zjistit, zda vaše tabulka obsahuje fyzický oddíl, či nikoliv, můžete použít tento dotaz: .
Úplné načtení z velké tabulky bez fyzických oddílů, zatímco s celočíselnou nebo datetime sloupcem pro dělení dat. Možnosti dělení: Dynamické rozdělení rozsahu
Sloupec pro rozdělení (volitelné): Zadejte sloupec pro rozdělení dat. Pokud není zadaný, použije se sloupec indexu nebo primárního klíče.
Horní mez oddílu a dolní mez oddílu (volitelné): Zadejte, zda chcete určit krok oddílu. To není pro filtrování řádků v tabulce, všechny řádky v tabulce budou rozděleny a zkopírovány. Pokud není zadáno, aktivita kopírování automaticky zjistí hodnoty a může trvat dlouhou dobu v závislosti na hodnotách MIN a MAX. Doporučuje se zadat horní mez a dolní mez.

Například pokud má váš sloupec oddílu "ID" hodnoty v rozmezí od 1 do 100 a nastavíte dolní mez na 20 a horní mez na 80, přičemž paralelní kopírování je nastaveno na 4, služba načte data ve 4 oddílech – ID v rozsahu <=20, [21, 50], [51, 80], a >=81.
Načtěte velké množství dat pomocí vlastního dotazu bez fyzických oddílů, zatímco s celočíselnou nebo datem a datem a časem pro dělení dat. Možnosti dělení: Dynamické rozdělení rozsahu
Dotaz: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Partiční sloupec: Zadejte sloupec použitý k rozdělení dat.
Horní mez oddílu a dolní mez oddílu (volitelné): Zadejte, zda chcete určit krok oddílu. To není pro filtrování řádků v tabulce, všechny řádky ve výsledku dotazu budou rozděleny a zkopírovány. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu.

Pokud má například sloupec oddílu "ID" hodnoty v rozsahu od 1 do 100 a spodní hranici nastavíte na 20, horní hranici na 80 a paralelní kopírování nastavíte na 4, služba načte data ze 4 oddílů: ID v rozsahu <= 20, [21, 50], [51, 80] a >= 81.

Tady jsou další ukázkové dotazy pro různé scénáře:
• Zadejte dotaz na celou tabulku:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• Dotaz z tabulky s výběrem sloupce a dalšími filtry klauzule where:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Dotaz s poddotazy:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Dotaz s particí v poddotazu:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Osvědčené postupy pro načtení dat s volbou partice:

  • Zvolte výrazný sloupec jako sloupec oddílu (například primární klíč nebo jedinečný klíč), abyste se vyhnuli nerovnoměrné distribuci dat.
  • Pokud má tabulka vestavěné oddíly, použijte možnost Fyzické oddíly tabulky ke zlepšení výkonu.

Ukázkový dotaz pro kontrolu fyzického oddílu

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]'

Pokud má tabulka fyzický oddíl, zobrazí se "HasPartition" jako "ano", podobně jako na následujícím příkladu.

Snímek obrazovky s výsledkem dotazu SQL

Souhrn tabulky

Následující tabulky obsahují další informace o aktivitě kopírování v databázi SQL.

Zdroj

Název Popis Hodnota Povinné Vlastnost skriptu JSON
Připojení Vaše připojení ke zdrojovému úložišti dat. <vaše připojení> Ano propojení
Použití dotazu Způsob čtení dat. Použití tabulky ke čtení dat ze zadané tabulky nebo použití dotazu ke čtení dat pomocí dotazů SQL. Tabulka
Dotaz
Uložená procedura
Ano /
Pro tabulku
název schématu Název schématu < název vašeho schématu > Ne schéma
název tabulky Název tabulky. < název tabulky > Ne tabulka
Pro dotaz
Dotaz Zadejte vlastní dotaz SQL pro čtení dat. Například: SELECT * FROM MyTable. < Dotazy SQL > Ne sqlReaderQuery
Pro uloženou proceduru
název uložené procedury Název uložené procedury. < název uložené procedury > Ne sqlReaderStoredProcedureName
vypršení časového limitu dotazu (minuty) Časový limit spuštění příkazu dotazu je ve výchozím nastavení 120 minut. Pokud je pro tuto vlastnost nastaven parametr, jsou povolené hodnoty časový rozsah, například 02:00:00 (120 minut). časové rozmezí Ne queryTimeout
úroveň izolace Určuje chování uzamčení transakce pro zdroj SQL. • Čtení potvrzeno
• Nepotvrzené čtení
• Opakovatelné čtení
•Serializovatelný
•Snímek
Ne úroveň izolace
• ReadCommitted
• ReadUncommitted
• RepeatableRead
•Serializovatelný
•Snímek
Možnost oddílu Možnosti dělení dat používané k načtení dat z databáze SQL. •Žádný
• Fyzické oddíly tabulky
• Dynamický rozsah
Ne partitionOption:
• FyzickéOddílyTabulky
• DynamicRange
Pro dynamický rozsah
Název sloupce oddílu Název zdrojového sloupce v typu integer nebo datum/datum a čas (int, smallint, bigint, date, smalldatetime, datetime, datetime2nebo datetimeoffset), který se používá pro rozsahovou particionaci při paralelním kopírování. Pokud není specifikováno, index nebo primární klíč tabulky se automaticky rozpozná a použije jako partiční sloupec. Pokud k načtení zdrojových dat použijete dotaz, zahrňte ?DfDynamicRangePartitionCondition do klauzule WHERE. < názvy sloupců oddílů > Ne partitionColumnName
Horní mez oddílu Maximální hodnota sloupce oddílu pro rozdělení rozsahu oddílů. Tato hodnota se používá k určení kroku dělení, nikoli k filtrování řádků v tabulce. Všechny řádky v tabulce nebo výsledku dotazu se rozdělí a zkopírují. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu. < horní mez oddílu > Ne partitionUpperBound
Dolní mez oddílu Minimální hodnota sloupce pro rozdělení oddílového rozsahu. Tato hodnota se používá k určení kroku dělení, nikoli k filtrování řádků v tabulce. Všechny řádky v tabulce nebo výsledku dotazu se rozdělí a zkopírují. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu. < dolní mez oddílu > Ne partitionLowerBound
Další sloupce Přidejte další datové sloupce pro ukládání relativní cesty ke zdrojovým souborům nebo statické hodnotě. Výraz je podporován pro druhý z uvedených. • Jméno
•Hodnota
Ne dodatečnéSloupce:
•Jméno
•hodnota

Cíl

Název Popis Hodnota Povinné Vlastnost skriptu JSON
Připojení Vaše připojení k cílovému úložišti dat. <vaše připojení > Ano propojení
Možnost tabulky Cílová tabulka dat Vyberte možnost Použít existující nebo automaticky vytvořit tabulku. • Použít existující
• Automaticky vytvořit tabulku
Ano schéma
tabulka
chování při zápisu Definuje chování zápisu, když zdroj je soubory ze souborového úložiště dat. • Vložit
• Upsert
• Uložená procedura
Ne writeBehavior:
•vložit
• vložit/aktualizovat (upsert)
• sqlWriterStoredProcedureName
Zámek hromadného vložení tabulky Toto nastavení použijte ke zlepšení výkonu kopírování během hromadné operace vložení v tabulce bez indexu z více klientů. Ano nebo Ne (výchozí) Ne sqlWriterUseTableLock:
true nebo false (výchozí)
Pro upsert
Použijte TempDB Zda použít globální dočasnou tabulku nebo fyzickou tabulku jako dočasnou tabulku pro upsert. vybraná (výchozí) nebo nevybraná Ne useTempDB:
pravda (true, výchozí) nebo nepravda (false)
Klíčové sloupce Zvolte, který sloupec se použije k určení, jestli řádek ze zdroje odpovídá řádku z cíle. < váš klíčový sloupec> Ne klíče
Pro uloženou proceduru
název uložené procedury Tato vlastnost je název uložené procedury, která čte data ze zdrojové tabulky. Poslední příkaz SQL musí být příkaz SELECT v uložené proceduře. < název uložené procedury > Ne sqlWriterStoredProcedureName
Skript předběžného kopírování Skript pro aktivitu kopírování, který se má spustit před zápisem dat do cílové tabulky v každém spuštění. Tuto vlastnost můžete použít k vyčištění předem načtených dat. <skript předběžného kopírování>
(string)
Ne preCopyScript
Časový limit dávkového zápisu Doba čekání, než se operace dávkového vložení dokončí, než vyprší časový limit. Povolená hodnota je časový rozsah. Výchozí hodnota je 00:30:00 (30 minut). časové rozmezí Ne writeBatchTimeout
velikost dávky zápisu Počet řádků, které se mají vložit do tabulky SQL na dávku Ve výchozím nastavení služba dynamicky určuje odpovídající velikost dávky na základě velikosti řádku. <počet řádků>
(celé číslo)
Ne writeBatchSize
Maximální počet souběžných připojení Horní limit souběžných připojení vytvořených k úložišti dat během spuštění aktivity. Zadejte hodnotu pouze v případech, kdy chcete omezit souběžná připojení. <horní limit souběžných připojení>
(celé číslo)
Ne maximálníPočetSoučasnýchPřipojení