Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du använder kopieringsaktiviteten i en pipeline för att kopiera data från och till SQL-databasen.
Konfiguration som stöds
För konfigurationen av varje flik under kopieringsaktivitet går du till följande avsnitt.
Allmänt
Se Allmänna-inställningar vägledning för att konfigurera inställningsfliken Allmänt.
Källa
Följande egenskaper stöds för SQL Database under fliken Källa för en kopieringsaktivitet.
Följande egenskaper krävs:
Anslutning: Välj en befintlig SQL-databas som refererar till steget i den här artikeln.
Använd fråga: Du kan välja Tabell, Queryeller Lagrad procedur. I följande lista beskrivs konfigurationen för varje inställning:
Tabell: Ange namnet på SQL-databasen för att läsa data. Välj en befintlig tabell i listrutan eller välj Retur manuellt för att ange schemat och tabellnamnet.
Query: Ange den anpassade SQL-frågan för att läsa data. Ett exempel är
select * from MyTable. Eller välj pennikonen som ska redigeras i kodredigeraren.Lagrad procedur: Välj den lagrade proceduren i listrutan.
Under Avancerat kan du ange följande fält:
Tidsgräns för frågor (minuter): Ange tidsgränsen för körning av frågekommandon är standardvärdet 120 minuter. Om parametern har angetts för den här egenskapen är tillåtna värden tidsintervall, till exempel "02:00:00" (120 minuter).
Isoleringsnivå: Anger transaktionslåsningsbeteendet för SQL-källan. De tillåtna värdena är: Read committed, Read uncommitted, Repeatable read, Serializable eller Snapshot. Mer information finns i IsolationLevel Enum.
Partitionsalternativ: Ange de datapartitioneringsalternativ som används för att läsa in data från SQL-databasen. Tillåtna värden är: Ingen (standard), fysiska partitioner av tabelloch dynamiskt intervall. När ett partitionsalternativ är aktiverat (dvs . inte Ingen) styrs graden av parallellitet för samtidig inläsning av data från en SQL-databas av grad av kopieringsparallellitet på fliken inställningar för kopieringsaktivitet.
Ingen: Välj den här inställningen om du inte vill använda en partition.
Fysiska partitioner i tabellen: När du använder en fysisk partition bestäms partitionskolumnen och mekanismen automatiskt baserat på din fysiska tabelldefinition.
Dynamiskt intervall: När du använder en fråga med parallellaktiverad krävs intervallpartitionsparametern(
?DfDynamicRangePartitionCondition). Exempelfråga:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.Partitioneringskolumnnamn: Ange namnet på källkolumnen i heltal eller datum/datumtid typ (
int,smallint,bigint,date,smalldatetime,datetime,datetime2ellerdatetimeoffset) som används av områdepartitionering för parallellkopiering. Om det inte anges identifieras indexet eller den primära nyckeln i tabellen automatiskt och används som partitionskolumn.Om du använder en fråga för att hämta källdata, sätt in
?DfDynamicRangePartitionConditioni WHERE-satsen. Ett exempel finns i avsnittet Parallellkopiering från SQL-databas .Partition övre gräns: Ange det maximala värdet för partitionskolumnen för delning av partitionsintervall. Det här värdet används för att bestämma partitionssteget, inte för att filtrera raderna i tabellen. Alla rader i tabellen eller frågeresultatet partitioneras och kopieras. Om det inte anges identifierar kopieringsaktivitet automatiskt värdet. Ett exempel finns i avsnittet Parallellkopiering från SQL-databas .
Partition med lägre bindning: Ange minimivärdet för partitionskolumnen för partitionsintervalldelning. Det här värdet används för att bestämma partitionssteget, inte för att filtrera raderna i tabellen. Alla rader i tabellen eller frågeresultatet partitioneras och kopieras. Om det inte anges identifierar kopieringsaktivitet automatiskt värdet. Ett exempel finns i avsnittet Parallellkopiering från SQL-databas .
Ytterligare kolumner: Lägg till fler datakolumner för att lagra källfilernas relativa sökväg eller statiska värde. Uttrycket stöds för det senare fallet. För mer information, gå till Lägg till ytterligare kolumner under kopiering.
Resmål
Följande egenskaper stöds för SQL Database under fliken Mål för en kopieringsaktivitet.
Följande egenskaper krävs:
Anslutning: Välj en befintlig SQL-databas som refererar till steget i den här artikeln.
Tabellalternativ: Välj från Använd befintlig tabell eller Skapa automatiskt tabell.
Om du väljer Använd befintlig:
- Tabell: Ange namnet på SQL-databasen för att skriva data. Välj en befintlig tabell i listrutan eller välj Retur manuellt för att ange schemat och tabellnamnet.
Om du väljer Skapa tabell automatiskt:
- Tabell: Tabellen skapas automatiskt (om den inte finns) i källschemat, vilket inte stöds när lagrad procedur används som skrivbeteende.
Under Avancerat kan du ange följande fält:
Skrivbeteende: Definierar skrivbeteendet när källan är filer från ett filbaserat datalager. Du kan välja Infoga, Upsert eller Sparad procedur.
Infoga: Välj det här alternativet om källdata har infogats.
Upsert: Välj det här alternativet om dina källdata har både infogningar och uppdateringar.
Använd TempDB: Ange om du vill använda en global tillfällig tabell eller fysisk tabell som interimtabell för upsert. Som standard använder tjänsten global tillfällig tabell som interimtabell och den här kryssrutan är markerad.
Om du skriver stora mängder data till SQL-databasen avmarkerar du detta och anger ett schemanamn under vilket Data Factory skapar en mellanlagringstabell för att läsa in uppströmsdata och rensa automatiskt när det är klart. Kontrollera att användaren har behörighet att skapa tabellen i databasen och ändra behörigheten för schemat. Om det inte anges används en global temporär tabell som mellanlagring.Välj användardatabasschema: När du inte har valt Använd TempDB anger du ett schemanamn under vilket Data Factory ska skapa en mellanlagringstabell för att läsa in uppströmsdata och automatiskt rensa dem när de är klara. Kontrollera att du har behörigheten skapa tabell i databasen och ändra behörigheten för schemat.
Anmärkning
Du måste ha behörighet att skapa och ta bort tabeller. Som standard delar en interimtabell samma schema som en måltabell.
Nyckelkolumner: Välj vilken kolumn som ska användas för att avgöra om en rad från källan matchar en rad från målet.
Namn på lagrad procedur: Välj den lagrade proceduren i listrutan.
Massinfoga tabellås: Välj Ja eller Nej. Använd den här inställningen för att förbättra kopieringsprestanda under en massinfogningsåtgärd i en tabell utan index från flera klienter. Mer information finns i BULK INSERT (Transact-SQL)
Förkopieringsskript: Ange ett skript för kopieringsaktiviteten som ska köras innan data skrivs till en måltabell i varje körning. Du kan använda den här egenskapen för att rensa inlästa data.
Skrivbatchens tidsgräns: Ange väntetiden för batchinmatningsoperationen att slutföras innan den avbryts. Det tillåtna värdet är tidsperiod. Standardvärdet är "00:30:00" (30 minuter).
Skriv batchstorlek: Ange antalet rader som ska infogas i SQL-tabellen per batch. Det tillåtna värdet är heltal (antal rader). Som standard avgör tjänsten dynamiskt lämplig batchstorlek baserat på radstorleken.
Maximalt antal samtidiga anslutningar: Ange den övre gränsen för samtidiga anslutningar som upprättats till datalagret under aktivitetskörningen. Ange endast ett värde när du vill begränsa samtidiga anslutningar.
Kartläggning
För konfiguration av fliken Mappning, om du inte använder en SQL-databas med automatisk skapande av tabell som ditt mål, går du till Mappning.
Om du använder SQL-databas med tabellen för automatisk skapande som mål, förutom konfigurationen i Mappning, kan du redigera typen för målkolumnerna. När du har valt Importera scheman kan du ange kolumntypen i målet.
Till exempel är typen för ID kolumn i källan int, och du kan ändra den till flyttaltyp vid mappning till målkolumnen.
Inställningar
För Inställningar flikkonfiguration går du till Konfigurera dina andra inställningar under fliken Inställningar.
Parallellkopiering från SQL-databas
SQL Database-anslutningsappen i kopieringsaktiviteten tillhandahåller inbyggd datapartitionering för att kopiera data parallellt. Du hittar alternativ för datapartitionering på fliken Källa i kopieringsaktiviteten.
När du aktiverar partitionerad kopiering kör kopieringsaktiviteten parallella frågor mot SQL-databaskällan för att läsa in data efter partitioner. Parallellgraden styrs av grad av kopieringsparallellitet på fliken inställningar för kopieringsaktivitet. Om du till exempel anger Grad av kopieringsparallellitet till fyra genererar och kör tjänsten samtidigt fyra frågor baserat på ditt angivna partitionsalternativ och inställningar, och varje fråga hämtar en del av data från SQL-databasen.
Du rekommenderas att aktivera parallell kopiering med datapartitionering, särskilt när du läser in stora mängder data från DIN SQL-databas. Följande är föreslagna konfigurationer för olika scenarier. När du kopierar data till filbaserat datalager rekommenderar vi att du skriver till en mapp som flera filer (anger endast mappnamn), i vilket fall prestandan är bättre än att skriva till en enda fil.
| Scenarium | Föreslagna inställningar |
|---|---|
| Fullständig laddning från en stor tabell med fysiska partitioner. |
Partitionsalternativ: Fysiska partitioner i tabellen. Under körningsprocessen identifierar tjänsten automatiskt de fysiska partitionerna och kopierar data genom partitioner. Om du vill kontrollera om tabellen har en fysisk partition eller inte kan du hänvisa till den här sökfrågan. |
| Fullständig belastning från en stor tabell utan fysiska partitioner, men med en heltalskolumn eller en kolumn för datum och tid för datapartitionering. |
Partitionsalternativ: Partition med dynamiskt intervall. partitionskolumn (valfritt): Ange den kolumn som används för att partitionera data. Om det inte anges används index- eller primärnyckelkolumnen. Övre gräns för partition och nedre gräns för partition (valfritt): Ange om du vill fastställa partitionssteg. Detta är inte för att filtrera raderna i tabellen, alla rader i tabellen partitioneras och kopieras. Om det inte anges identifierar kopieringsaktiviteten automatiskt värdena och det kan ta lång tid beroende på MIN- och MAX-värden. Vi rekommenderar att du anger övre och nedre gräns. Om partitionskolumnen "ID" till exempel har värden mellan 1 och 100 och du anger den nedre gränsen som 20 och den övre gränsen som 80, med parallell kopia som 4, hämtar tjänsten data med 4 partitioner – ID:n i intervallet <=20, [21, 50], [51, 80] respektive >=81. |
| Läs in en stor mängd data med hjälp av en anpassad fråga, utan fysiska partitioner, med ett heltal eller en date/datetime-kolumn för datapartitionering. |
Partitionsalternativ: Partition med dynamiskt intervall. Fråga: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.Partitionskolumn: Ange den kolumn som används för att partitionera data. Övre gräns för partition och nedre gräns för partition (valfritt): Ange om du vill fastställa partitionssteg. Detta är inte för att filtrera raderna i tabellen, alla rader i frågeresultatet partitioneras och kopieras. Om det inte anges identifierar kopieringsaktivitet automatiskt värdet. Om partitionskolumnen "ID" till exempel har värden mellan 1 och 100 och du anger den nedre gränsen som 20 och den övre gränsen som 80, med parallell kopia som 4, hämtar tjänsten data med 4 partitioner – ID:n i intervallet <=20, [21, 50], [51, 80] respektive >=81. Här är fler exempelfrågor för olika scenarier: • Sök i hela tabellen: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition• Fråga från en tabell med kolumnval och ytterligare filter i WHERE-villkoret: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>• Fråga med underfrågor: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>• Fråga med partition i underfråga: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Metodtips för att läsa in data med partitionsalternativet:
- Välj distinkt kolumn som partitionskolumn (till exempel primärnyckel eller unik nyckel) för att undvika datasnedvridning.
- Om tabellen har inbyggd partition använder du partitionsalternativet fysiska partitioner i tabellen för att få bättre prestanda.
Exempelfråga för att kontrollera 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]'
Om tabellen har en fysisk partition ser du "HasPartition" som "ja" som följande.
Tabellsammanfattning
Följande tabeller innehåller mer information om kopieringsaktiviteten i SQL-databasen.
Källa
| Namn | Beskrivning | Värde | Krävs | JSON-skriptegenskap |
|---|---|---|---|---|
| Anslutning | Din anslutning till källdatalagret. | <din anslutning> | Ja | anslutning |
| Använd sökfråga | Sättet att läsa data. Använd Table för att läsa data från den angivna tabellen eller tillämpa Query för att läsa data med SQL-frågor. | • Tabell • Sökfråga • Sparad procedur |
Ja | / |
| För tabell | ||||
| schemanamn | Namnet på schemat. | < ditt schemanamn > | Nej | schema |
| tabellnamn | Tabellens namn. | < ditt tabellnamn > | Nej | bord |
| För fråga | ||||
| Fråga | Ange den anpassade SQL-frågan för att läsa data. Till exempel: SELECT * FROM MyTable. |
< SQL-frågor > | Nej | sqlReaderQuery |
| För lagrad procedur | ||||
| Namn på lagrad procedur | Namnet på den lagrade proceduren. | < namnet på den lagrade proceduren > | Nej | sqlReaderStoredProcedureName |
| Tidsgräns för frågor (minuter) | Tidsgränsen för körning av frågekommandon är standardvärdet 120 minuter. Om parametern har angetts för den här egenskapen är tillåtna värden tidsintervall, till exempel "02:00:00" (120 minuter). | tidsintervall | Nej | förfråganTidsgräns |
| isoleringsnivå | Anger transaktionslåsningsbeteendet för SQL-källan. | • Läs kommitterad • Läs obekräftade • Repeterbar läsning • Serialiserbar •Ögonblicksbild |
Nej | isolationsnivå • ReadCommitted • ReadUncommitted • Upprepningsbar Läsning • Serialiserbar •Ögonblicksbild |
| Partitionsalternativ | De datapartitioneringsalternativ som används för att läsa in data från SQL-databasen. | •Ingen • Fysiska partitioner av tabellen • Dynamiskt intervall |
Nej | partitioneringsalternativ • Fysiska partitioner av tabell • DynamicRange |
| För dynamiskt intervall | ||||
| Kolumnnamn för partition | Namnet på källkolumnen i heltal eller datum/datumtid typ (int, smallint, bigint, date, smalldatetime, datetime, datetime2eller datetimeoffset) som används av intervallpartitionering för parallellkopiering. Om det inte anges identifieras indexet eller den primära nyckeln i tabellen automatiskt och används som partitionskolumn. Om du använder en fråga för att hämta källdata, sätt in ?DfDynamicRangePartitionCondition i WHERE-satsen. |
< dina partitionskolumnnamn > | Nej | partitionskolumnnamn |
| Partitionsövre gräns | Det maximala värdet för partitionskolumnen för partitionsintervalldelning. Det här värdet används för att bestämma partitionssteget, inte för att filtrera raderna i tabellen. Alla rader i tabellen eller frågeresultatet partitioneras och kopieras. Om det inte anges identifierar kopieringsaktivitet automatiskt värdet. | < partitionens övre gräns > | Nej | partitionens övre gräns |
| Nedre gräns för partition | Minimivärdet för partitionskolumnen för partitionsintervalldelning. Det här värdet används för att bestämma partitionssteget, inte för att filtrera raderna i tabellen. Alla rader i tabellen eller frågeresultatet partitioneras och kopieras. Om det inte anges identifierar kopieringsaktivitet automatiskt värdet. | < partitionens nedre gräns > | Nej | partitionens nedre gräns |
| Ytterligare kolumner | Lägg till fler datakolumner för att lagra källfilernas relativa sökväg eller statiska värde. Uttrycket stöds för det senare fallet. | •Namn •Värde |
Nej | ytterligareKolumner: •Namn • värde |
Resmål
| Namn | Beskrivning | Värde | Krävs | JSON-skriptegenskap |
|---|---|---|---|---|
| Anslutning | Din anslutning till måldatalagret. | <din anslutning > | Ja | anslutning |
| tabellalternativet | Destinationsdatabordet. Välj antingen Använd befintlig eller Skapa tabell automatiskt. | • Använd befintliga • Skapa tabell automatiskt |
Ja | Schemat bord |
| Skrivbeteende | Definierar skrivbeteendet när källan är filer från ett filbaserat datalager. | • Infoga • Uppdatera eller infoga • Sparad procedur |
Nej | writeBehavior: • infoga • infoga eller uppdatera • sqlWriterStoredProcedureName |
| Bulkinfoga tabellås | Använd den här inställningen för att förbättra kopieringsprestanda under en massinfogningsåtgärd i en tabell utan index från flera klienter. | Ja eller Nej (standard) | Nej | sqlWriterUseTableLock: sant eller falskt (standard) |
| För Upsert | ||||
| Använda TempDB | Om du vill använda en global tillfällig tabell eller fysisk tabell som interimtabell för upsert. | markerad (standard) eller omarkerad | Nej | useTempDB: sant (standard) eller falskt |
| Nyckelkolumner | Välj vilken kolumn som ska användas för att avgöra om en rad från källan matchar en rad från målet. | < din nyckelkolumn> | Nej | Nycklar |
| För lagrad procedur | ||||
| Namn på lagrad procedur | Den här egenskapen är namnet på den lagrade proceduren som läser data från källtabellen. Den sista SQL-instruktionen måste vara en SELECT-instruktion i den lagrade proceduren. | < lagrat procedurnamn > | Nej | sqlWriterStoredProcedureName |
| förkopieringsskript | Ett skript för kopieringsaktivitet som ska köras innan data skrivs till en destinationstabell vid varje körning. Du kan använda den här egenskapen för att rensa inlästa data. |
<förkopieringsskript> (sträng) |
Nej | preCopyScript |
| Tidsgräns för batchskrivning | Väntetiden för att batchinfogningsåtgärden ska slutföras innan den når tidsgränsen. Det godkända värdet är tidsåtgång. Standardvärdet är "00:30:00" (30 minuter). | tidsintervall | Nej | writeBatchTimeout |
| Skriv batchstorlek | Antalet rader som ska infogas i SQL-tabellen per batch. Som standard avgör tjänsten dynamiskt lämplig batchstorlek baserat på radstorleken. |
<antal rader> (heltal) |
Nej | writeBatchSize |
| Maximalt antal samtidiga anslutningar | Den övre gränsen för samtidiga anslutningar som upprättats till datalagret under aktiviteten. Ange endast ett värde när du vill begränsa samtidiga anslutningar. |
<övre gränsen för samtidiga anslutningar> (heltal) |
Nej | maximalt antal samtidiga anslutningar |