Del via


Konfigurer SQL-database i en kopiaktivitet (prøveversion)

I denne artikel beskrives det, hvordan du bruger kopiaktiviteten i datapipeline til at kopiere data fra og til SQL-database.

Understøttet konfiguration

Hvis du vil konfigurere hver fane under kopiaktivitet, skal du gå til henholdsvis følgende afsnit.

Generel

Se Generelle indstillinger for vejledning til at konfigurere fanen Generelle indstillinger for .

Kilde

Følgende egenskaber understøttes for SQL-databasen under fanen Kilde i en kopiaktivitet.

Skærmbillede, der viser kildefanen og listen over egenskaber.

Følgende egenskaber er påkrævede:

  • Forbindelse: Vælg en eksisterende SQL-database, der refererer til trinnet i denne artikel.

  • Brug forespørgsels: Du kan vælge Table, Queryeller Lagret procedure. På følgende liste beskrives konfigurationen af hver indstilling:

    • Tabel: Angiv navnet på den SQL-database, der skal læse data. Vælg en eksisterende tabel på rullelisten, eller vælg Angiv manuelt for at angive skemaet og tabelnavnet.

    • Forespørgsel: Angiv den brugerdefinerede SQL-forespørgsel for at læse data. Et eksempel er select * from MyTable. Eller vælg blyantsikonet for at redigere i kodeeditoren.

      Skærmbillede, der viser valg af forespørgsel.

    • Lagret procedure: Vælg den lagrede procedure på rullelisten.

Under Advancedkan du angive følgende felter:

  • timeout for forespørgsel (minutter): Angiv timeout for udførelse af forespørgselskommando, standard er 120 minutter. Hvis parameteren er angivet for denne egenskab, er de tilladte værdier et tidsrum, f.eks. "02:00:00" (120 minutter).

    Skærmbillede, der viser timeoutindstillinger for forespørgsel.

  • isolationsniveau: Angiver funktionsmåden for låsning af transaktioner for SQL-kilden. De tilladte værdier er: Læseaktiveret, Læs ikke-gemtGentaget læsning, Serialiserbareller Snapshot. Se IsolationLevel Enum- for at få flere oplysninger.

    Skærmbillede, der viser indstillinger for isolationsniveau.

  • partitionsindstilling: Angiv de indstillinger for datapartitionering, der bruges til at indlæse data fra SQL-databasen. Tilladte værdier er: Ingen (standard), Fysiske partitioner af tabelog Dynamisk område. Når en partitionsindstilling er aktiveret (dvs. ikke Ingen), styres graden af parallelitet med samtidig indlæsning af data fra en SQL-database af Grad af kopi parallelitet under fanen indstillinger for kopiaktivitet.

    • Ingen: Vælg denne indstilling for ikke at bruge en partition.

    • fysiske partitioner i tabel: Når du bruger en fysisk partition, bestemmes partitionskolonnen og -mekanismen automatisk på baggrund af definitionen af den fysiske tabel.

    • Dynamisk område: Når du bruger en forespørgsel med parallel aktiveret, er områdepartitionsparameteren(?DfDynamicRangePartitionCondition) nødvendig. Eksempelforespørgsel: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Kolonnenavn på partition: Angiv navnet på kildekolonnen i heltal eller dato/datetime type (int, smallint, bigint, date, smalldatetime, datetime, datetime2eller datetimeoffset), der bruges til områdepartitionering til parallel kopi. Hvis den ikke er angivet, registreres indekset eller tabellens primære nøgle automatisk og bruges som partitionskolonnen.

        Hvis du bruger en forespørgsel til at hente kildedataene, skal du koble ?DfDynamicRangePartitionCondition i WHERE-delsætningen. Du kan f.eks. se afsnittet parallel kopi fra SQL-database.

      • Partitions øvre grænse: Angiv den maksimale værdi for partitionskolonnen for opdeling af partitionsområdet. Denne værdi bruges til at bestemme partitionsskridtet, ikke til filtrering af rækkerne i tabellen. Alle rækker i tabellen eller forespørgselsresultatet partitioneres og kopieres. Hvis den ikke er angivet, skal du automatisk registrere værdien for kopiering af aktivitet. Du kan f.eks. se afsnittet parallel kopi fra SQL-database.

      • Partitions nedre grænse: Angiv minimumværdien af partitionskolonnen for opdeling af partitionsområdet. Denne værdi bruges til at bestemme partitionsskridtet, ikke til filtrering af rækkerne i tabellen. Alle rækker i tabellen eller forespørgselsresultatet partitioneres og kopieres. Hvis den ikke er angivet, skal du automatisk registrere værdien for kopiering af aktivitet. Du kan f.eks. se afsnittet parallel kopi fra SQL-database.

  • Flere kolonner: Tilføj flere datakolonner for at gemme kildefilernes relative sti eller statiske værdi. Udtrykket understøttes for sidstnævnte. Du kan finde flere oplysninger ved at gå til Tilføj flere kolonner under kopiering.

Destination

Følgende egenskaber understøttes for SQL-databasen under fanen Destination i en kopiaktivitet.

Skærmbillede, der viser fanen Destination.

Følgende egenskaber er påkrævede:

  • Forbindelse: Vælg en eksisterende SQL-database, der refererer til trinnet i denne artikel.

  • tabelindstilling: Vælg mellem Brug eksisterende eller Opret tabel automatisk.

    • Hvis du vælger Brug eksisterende:

      • Tabel: Angiv navnet på den SQL-database, der skal skrives data. Vælg en eksisterende tabel på rullelisten, eller vælg Angiv manuelt for at angive skemaet og tabelnavnet.
    • Hvis du vælger Opret tabel automatisk:

      • Table: Den opretter automatisk tabellen (hvis den ikke findes) i kildeskemaet, hvilket ikke understøttes, når lagret procedure bruges som skrivefunktion.

Under Advancedkan du angive følgende felter:

  • skrivefunktionsmåde: Definerer skrivefunktionsmåden, når kilden er filer fra et filbaseret datalager. Du kan vælge Indsæt, Upsert- eller Lagret procedure.

    Skærmbillede af fanen skrivefunktion.

    • Indsæt: Vælg denne indstilling, hvis kildedataene indeholder indsættelser.

    • Upsert: Vælg denne indstilling, hvis kildedataene indeholder både indsættelser og opdateringer.

      • Brug TempDB-: Angiv, om du vil bruge en global midlertidig tabel eller en fysisk tabel som midlertidig tabel til upsert. Tjenesten bruger som standard global midlertidig tabel som midlertidig tabel, og dette afkrydsningsfelt er markeret.
        Hvis du skriver store mængder data til SQL-databasen, skal du fjerne markeringen af dette og angive et skemanavn, som Data Factory skal oprette en midlertidig tabel under for at indlæse upstream-data og rydde automatisk op efter fuldførelsen. Sørg for, at brugeren har tilladelse til at oprette tabeller i databasen, og rediger tilladelsen til skemaet. Hvis den ikke er angivet, bruges en global midlertidig tabel som midlertidig.

        Skærmbillede, der viser vælg Brug TempDB.

      • Vælg brugerdatabaseskema: Når Brug TempDB- ikke er valgt, skal du angive et skemanavn, hvorefter Data Factory opretter en midlertidig tabel for at indlæse upstream-data og automatisk rydde dem op efter fuldførelsen. Kontrollér, at du har oprettet tabeltilladelser i databasen, og rediger tilladelsen til skemaet.

        Seddel

        Du skal have tilladelse til at oprette og slette tabeller. En midlertidig tabel deler som standard det samme skema som en destinationstabel.

        Skærmbillede, der viser, at du ikke vælger Brug TempDB.

      • Nøglekolonner: Vælg, hvilken kolonne der skal bruges til at bestemme, om en række fra kilden svarer til en række fra destinationen.

    • Navn på lagret procedure: Vælg den lagrede procedure på rullelisten.

  • til masseindsætning af tabel: Vælg Ja eller Nej. Brug denne indstilling til at forbedre kopiens ydeevne under en masseindsætningshandling i en tabel uden indeks fra flere klienter. Du kan få flere oplysninger ved at gå til BULK INSERT (Transact-SQL)

  • script: Angiv et script til kopieringsaktiviteten, før der skrives data til en destinationstabel i hver kørsel. Du kan bruge denne egenskab til at rydde op i forudindlæste data.

  • Skriv batchtimeout: Angiv ventetiden for batchindsætningshandlingen, før der opstår timeout. Den tilladte værdi er et tidsrum. Standardværdien er "00:30:00" (30 minutter).

  • Skriv batchstørrelse: Angiv det antal rækker, der skal indsættes i SQL-tabellen pr. batch. Den tilladte værdi er heltal (antal rækker). Tjenesten bestemmer som standard dynamisk den relevante batchstørrelse baseret på rækkestørrelsen.

  • Maks. antal samtidige forbindelser: Angiv den øvre grænse for samtidige forbindelser, der er oprettet til datalageret under aktivitetskørslen. Angiv kun en værdi, når du vil begrænse samtidige forbindelser.

Kortlægning

Hvis du ikke anvender SQL-database med automatisk oprettelse af tabel som destination for tilknytning fanekonfiguration, skal du gå til Tilknytning.

Hvis du anvender SQL-database med automatisk oprettelse af tabel som destination, bortset fra konfigurationen i Tilknytning, kan du redigere typen for destinationskolonnerne. Når du har valgt Importér skemaer, kan du angive kolonnetypen i destinationen.

Typen af id kolonne i kilden er f.eks. int, og du kan ændre den til flydende type, når du tilknytter til destinationskolonnen.

Skærmbillede af tilknytning af destinationskolonnetype.

Indstillinger

For Indstillinger fanekonfiguration skal du gå til Konfigurer dine andre indstillinger under fanen Indstillinger.

Parallel kopi fra SQL-database

SQL-databaseconnectoren i kopieringsaktivitet giver indbygget datapartitionering for at kopiere data parallelt. Du kan finde indstillinger for datapartitionering under fanen Kilde i kopiaktiviteten.

Når du aktiverer partitioneret kopiering, kører kopieringsaktivitet parallelle forespørgsler mod SQL-databasekilden for at indlæse data fra partitioner. Den parallelle grad styres af den grad af kopi parallelitet under fanen indstillinger for kopieringsaktivitet. Hvis du f.eks. angiver Grad af kopi parallelitet til fire, genererer og kører tjenesten samtidig fire forespørgsler baseret på din angivne partitionsindstilling og dine angivne indstillinger, og hver forespørgsel henter en del af dataene fra SQL-databasen.

Det anbefales, at du aktiverer parallel kopiering med datapartitionering, især når du indlæser store mængder data fra sql-databasen. Følgende er foreslåede konfigurationer til forskellige scenarier. Når du kopierer data til et filbaseret datalager, anbefales det at skrive til en mappe som flere filer (angiv kun mappenavn), i hvilket tilfælde ydeevnen er bedre end at skrive til en enkelt fil.

Scenario Foreslåede indstillinger
Fuld belastning fra store tabeller med fysiske partitioner. partitionsindstilling: Fysiske partitioner i tabellen.

Under udførelsen registrerer tjenesten automatisk de fysiske partitioner og kopierer data fra partitioner.

Hvis du vil kontrollere, om tabellen har en fysisk partition eller ej, kan du se denne forespørgsel.
Fuld belastning fra store tabeller uden fysiske partitioner, mens der er en heltals- eller datetime-kolonne til datapartitionering. Partitionsindstillinger: Partition med dynamisk område.
partitionskolonne (valgfrit): Angiv den kolonne, der skal bruges til at partitionere data. Hvis den ikke er angivet, bruges kolonnen med indekset eller den primære nøgle.
Partitionsoverbundne og partitionens nedre grænse (valgfrit): Angiv, om du vil bestemme partitionens fremskridt. Dette er ikke til filtrering af rækkerne i tabellen. Alle rækker i tabellen partitioneres og kopieres. Hvis den ikke er angivet, registrerer kopiaktivitet automatisk værdierne, og det kan tage lang tid, afhængigt af værdierne MIN og MAX. Det anbefales at angive øvre og nedre grænse.

Hvis partitionskolonnen "ID" f.eks. har værdier fra 1 til 100, og du angiver den nedre grænse som 20 og den øvre grænse som 80, med parallel kopi som 4, henter tjenesten data efter 4 partitioner – id'er i området <=20, [21, 50], [51, 80] og >=81.
Indlæs en stor mængde data ved hjælp af en brugerdefineret forespørgsel uden fysiske partitioner, mens du har et heltal eller en dato/datetime-kolonne til datapartitionering. Partitionsindstillinger: Partition med dynamisk område.
Forespørgsel: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
partitionskolonne: Angiv den kolonne, der skal bruges til at partitionere data.
Partitionsoverbundne og partitionens nedre grænse (valgfrit): Angiv, om du vil bestemme partitionens fremskridt. Dette er ikke til filtrering af rækkerne i tabellen. Alle rækker i forespørgselsresultatet partitioneres og kopieres. Hvis den ikke er angivet, skal du automatisk registrere værdien for kopiering af aktivitet.

Hvis partitionskolonnen "ID" f.eks. har værdier fra 1 til 100, og du angiver den nedre grænse som 20 og den øvre grænse som 80, med parallel kopi som 4, henter tjenesten data efter 4 partitioner – id'er i området <=20, [21, 50], [51, 80] og >=81.

Her er flere eksempelforespørgsler til forskellige scenarier:
• Forespørg hele tabellen:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• Forespørg fra en tabel med valg af kolonne og yderligere where-clause-filtre:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Forespørgsel med underforespørgsler:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Forespørgsel med partition i underforespørgsel:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Bedste fremgangsmåder til indlæsning af data med partitionsindstilling:

  • Vælg en karakteristisk kolonne som partitionskolonne (f.eks. primær nøgle eller entydig nøgle) for at undgå dataforvrængelse.
  • Hvis tabellen har en indbygget partition, skal du bruge partitionsindstillingen Fysiske partitioner i tabellen for at få en bedre ydeevne.

Eksempelforespørgsel til kontrol af fysisk partition

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

Hvis tabellen har en fysisk partition, kan du se "HasPartition" som "ja" som følgende.

Skærmbillede af et SQL-forespørgselsresultat.

Tabeloversigt

Følgende tabeller indeholder flere oplysninger om kopiaktiviteten i SQL-databasen.

Kilde

Navn Beskrivelse Værdi Kræves JSON-scriptegenskab
forbindelse Din forbindelse til kildedatalageret. <forbindelsen> Ja forbindelse
Brug forespørgsels Måden at læse data på. Anvend table til at læse data fra den angivne tabel, eller anvend Query- på at læse data ved hjælp af SQL-forespørgsler. tabel
forespørgsel
lagrede procedure
Ja /
til tabel
skemanavn Navnet på skemaet. < skemanavnet > Nej skema
tabelnavn Navnet på tabellen. < tabelnavnet > Nej bord
til forespørgsel
forespørgsels Angiv den brugerdefinerede SQL-forespørgsel for at læse data. For eksempel: SELECT * FROM MyTable. < SQL-forespørgsler > Nej sqlReaderQuery
For lagrede procedure
Navn på lagret procedure Navnet på den lagrede procedure. < navnet på den lagrede procedure > Nej sqlReaderStoredProcedureName
timeout for forespørgsel (minutter) Timeout for udførelse af forespørgselskommando er som standard 120 minutter. Hvis parameteren er angivet for denne egenskab, er de tilladte værdier et tidsrum, f.eks. "02:00:00" (120 minutter). timespan Nej queryTimeout
isolationsniveau Angiver funktionsmåden for transaktionslåsning for SQL-kilden. • Bekræftet læsning
• Ikke-indlæst læsning
• Læs igen
•Serialiserbar
•Snapshot
Nej isolationLevel:
• Skrivebeskyttet
• ReadUncommitted
• RepeatableRead
•Serialiserbar
•Snapshot
partitionsindstilling De indstillinger for datapartitionering, der bruges til at indlæse data fra SQL-databasen. •Ingen
• Fysiske partitioner i tabellen
•Dynamikområde
Nej partitionOption:
• PhysicalPartitionsOfTable
• Dynamisk rækkefølge
For Dynamisk område
Kolonnenavn på partition Navnet på kildekolonnen i heltal eller dato/datetime- type (int, smallint, bigint, date, smalldatetime, datetime, datetime2eller datetimeoffset), der bruges til områdepartitionering til parallel kopiering. Hvis den ikke er angivet, registreres indekset eller tabellens primære nøgle automatisk og bruges som partitionskolonnen. Hvis du bruger en forespørgsel til at hente kildedataene, skal du koble ?DfDynamicRangePartitionCondition i WHERE-delsætningen. < navnene på partitionskolonnen > Nej partitionColumnName
Partitions øvre grænse Den maksimale værdi for partitionskolonnen for opdeling af partitionsområde. Denne værdi bruges til at bestemme partitionsskridtet, ikke til filtrering af rækkerne i tabellen. Alle rækker i tabellen eller forespørgselsresultatet partitioneres og kopieres. Hvis den ikke er angivet, skal du automatisk registrere værdien for kopiering af aktivitet. < den øvre grænse for partitionen > Nej partitionUpperBound
Partition med nedre grænse Den mindste værdi for partitionskolonnen for opdeling af partitionsområdet. Denne værdi bruges til at bestemme partitionsskridtet, ikke til filtrering af rækkerne i tabellen. Alle rækker i tabellen eller forespørgselsresultatet partitioneres og kopieres. Hvis den ikke er angivet, skal du automatisk registrere værdien for kopiering af aktivitet. < den nedre grænse for partitionen > Nej partitionLowerBound
Yderligere kolonner Tilføj flere datakolonner for at gemme kildefilernes relative sti eller statiske værdi. Udtrykket understøttes for sidstnævnte. •Navn
•Værdi
Nej additionalColumns:
•Navn
•værdi

Destination

Navn Beskrivelse Værdi Kræves JSON-scriptegenskab
forbindelse Din forbindelse til destinationsdatalageret. <forbindelsen > Ja forbindelse
indstillingen tabel Din destinationsdatatabel. Vælg mellem Brug eksisterende eller Opret tabel automatisk. • Brug eksisterende
• Opret tabel automatisk
Ja skema
bord
skrivefunktionsmåde Definerer skrivefunktionsmåden, når kilden er filer fra et filbaseret datalager. •Indsætte
• Upsert
• Lagret procedure
Nej writeBehavior:
•indsætte
• upsert
• sqlWriterStoredProcedureName
for masseindsætning af tabellås Brug denne indstilling til at forbedre kopiens ydeevne under en masseindsætningshandling i en tabel uden indeks fra flere klienter. Ja eller Nej (standard) Nej sqlWriterUseTableLock:
true eller false (standard)
til Upsert
Brug TempDB- Om du vil bruge en global midlertidig tabel eller en fysisk tabel som midlertidig tabel til upsert. markeret (standard) eller ikke markeret Nej useTempDB:
true (standard) eller false
nøglekolonner Vælg, hvilken kolonne der skal bruges til at bestemme, om en række fra kilden svarer til en række fra destinationen. < nøglekolonnen> Nej Nøgler
For lagrede procedure
Navn på lagret procedure Denne egenskab er navnet på den lagrede procedure, der læser data fra kildetabellen. Den sidste SQL-sætning skal være en SELECT-sætning i den lagrede procedure. < lagrede procedurenavn > Nej sqlWriterStoredProcedureName
script Et script til Kopier aktivitet, der skal udføres, før du skriver data til en destinationstabel i hver kørsel. Du kan bruge denne egenskab til at rydde op i forudindlæste data. <script>
(streng)
Nej preCopyScript
timeout for skrivning af batch Ventetiden for, at batchindsætningshandlingen afsluttes, før der udløber timeout. Den tilladte værdi er et tidsrum. Standardværdien er "00:30:00" (30 minutter). timespan Nej writeBatchTimeout
Skriv batchstørrelse Det antal rækker, der skal indsættes i SQL-tabellen pr. batch. Tjenesten bestemmer som standard dynamisk den relevante batchstørrelse baseret på rækkestørrelsen. <antal rækker>
(heltal)
Nej writeBatchSize
Maks. antal samtidige forbindelser Den øvre grænse for samtidige forbindelser, der er oprettet til datalageret under aktivitetskørslen. Angiv kun en værdi, når du vil begrænse samtidige forbindelser. <øvre grænse for samtidige forbindelser>
(heltal)
Nej maxConcurrentConnections
  • oversigt SQL-database