SQL-database configureren in een kopieeractiviteit (preview)
In dit artikel wordt beschreven hoe u de kopieeractiviteit in de gegevenspijplijn gebruikt om gegevens van en naar sql-database te kopiëren.
Ondersteunde configuratie
Voor de configuratie van elk tabblad onder kopieeractiviteit gaat u respectievelijk naar de volgende secties.
Algemeen
Raadpleeg de Algemene-instellingen richtlijnen voor het configureren van het tabblad Algemeen instellingen.
Bron
De volgende eigenschappen worden ondersteund voor SQL Database op het tabblad Bron van een kopieeractiviteit.
De volgende eigenschappen zijn vereist:
Connection: Selecteer een bestaande SQL-database die verwijst naar de stap in dit artikel.
Querygebruiken: u kunt Tabel, Query, of Opgeslagen procedurekiezen. In de volgende lijst wordt de configuratie van elke instelling beschreven:
Tabel: geef de naam op van de SQL-database om gegevens te lezen. Kies een bestaande tabel in de vervolgkeuzelijst of selecteer Handmatig invoeren om de schema- en tabelnaam in te voeren.
Query: geef de aangepaste SQL-query op om gegevens te lezen. Een voorbeeld is
select * from MyTable
. Of selecteer het potloodpictogram dat u wilt bewerken in de code-editor.opgeslagen procedure: selecteer de opgeslagen procedure in de vervolgkeuzelijst.
Onder Geavanceerdekunt u de volgende velden opgeven:
time-out voor query's (minuten): geef de time-out op voor het uitvoeren van de queryopdracht. De standaardwaarde is 120 minuten. Als de parameter voor deze eigenschap is ingesteld, zijn toegestane waarden tijdspanne, zoals '02:00:00' (120 minuten).
isolatieniveau: hiermee geeft u het gedrag voor transactievergrendeling voor de SQL-bron op. De toegestane waarden zijn: Gelezen vastgelegd, Gelezen niet-doorgevoerd, Herhaalbaar lezen, Serieus leesbaarof Momentopname. Raadpleeg IsolationLevel Enum voor meer informatie.
Partitieoptie: geef de opties voor gegevenspartitionering op die worden gebruikt om gegevens uit sql-database te laden. Toegestane waarden zijn: Geen (standaard), Fysieke partities van tabelen dynamisch bereik. Wanneer een partitieoptie is ingeschakeld (dus niet Geen), wordt de mate van parallelle uitvoering om gegevens uit een SQL-database gelijktijdig te laden, beheerd door Mate van kopieerparallelisme op het tabblad Instellingen voor kopieeractiviteit.
Geen: kies deze instelling om geen partitie te gebruiken.
fysieke partities van tabel: wanneer u een fysieke partitie gebruikt, worden de partitiekolom en het mechanisme automatisch bepaald op basis van de definitie van uw fysieke tabel.
dynamisch bereik: wanneer u een query gebruikt waarvoor parallel is ingeschakeld, is de parameter voor bereikpartitie(
?DfDynamicRangePartitionCondition
) nodig. Voorbeeldquery:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.partitiekolomnaam: geef de naam op van de bronkolom in integer of datum/datum-tijd type (
int
,smallint
,bigint
,date
,smalldatetime
,datetime
,datetime2
ofdatetimeoffset
) dat wordt gebruikt door bereikpartitionering bij parallel kopiëren. Als deze niet is opgegeven, wordt de index of de primaire sleutel van de tabel automatisch gedetecteerd en gebruikt als partitiekolom.Als u een query gebruikt om de brongegevens op te halen, koppelt u
?DfDynamicRangePartitionCondition
in de WHERE-component. Zie de sectie Parallel kopiëren uit sql-database voor een voorbeeld.Partitie bovengrens: Geef de maximumwaarde van de partitiekolom op voor het splitsen van partitiebereiken. Deze waarde wordt gebruikt om de partitie-stride te bepalen, niet om de rijen in de tabel te filteren. Alle rijen in de tabel of het queryresultaat worden gepartitioneerd en gekopieerd. Als dit niet is opgegeven, detecteert kopieeractiviteit automatisch de waarde. Zie de sectie Parallel kopiëren uit sql-database voor een voorbeeld.
Partitie ondergrens: geef de minimumwaarde van de partitiekolom op voor het splitsen van partitiebereiken. Deze waarde wordt gebruikt om de partitiesprong te bepalen, niet voor het filteren van de rijen in de tabel. Alle rijen in de tabel of het queryresultaat worden gepartitioneerd en gekopieerd. Als dit niet is opgegeven, detecteert kopieeractiviteit automatisch de waarde. Zie de sectie Parallel kopiëren uit sql-database voor een voorbeeld.
Aanvullende kolommen: voeg meer gegevenskolommen toe om het relatieve pad of de statische waarde van bronbestanden op te slaan. Expressie wordt ondersteund voor de laatste. Ga naar Extra kolommen toevoegen tijdens het kopiërenvoor meer informatie.
Bestemming
De volgende eigenschappen worden ondersteund voor SQL-database op het tabblad Bestemming van een kopieeractiviteit.
De volgende eigenschappen zijn vereist:
Connection: Selecteer een bestaande SQL-database die verwijst naar de stap in dit artikel.
Tabeloptie: Selecteer uit Bestaande gebruiken of Automatisch tabel maken.
Als u bestaandeselecteert gebruiken:
- Tabel: geef de naam op van de SQL-database om gegevens te schrijven. Kies een bestaande tabel in de vervolgkeuzelijst of selecteer Handmatig invoeren om de schema- en tabelnaam in te voeren.
Als u automatisch tabel maken selecteert:
- Tabel: de tabel wordt automatisch gemaakt (indien niet-bestaand) in het bronschema. Dit wordt niet ondersteund wanneer de opgeslagen procedure wordt gebruikt als schrijfgedrag.
Onder Geavanceerdekunt u de volgende velden opgeven:
schrijfgedrag: definieert het schrijfgedrag wanneer de bron bestanden uit een bestandgebaseerde gegevensopslag is. U kunt kiezen voor Invoegen, Upsert of Stored Procedure.
Invoegen: Kies deze optie als uw brongegevens invoegingen bevatten.
Upsert: Kies deze optie als uw brongegevens zowel invoegen als bijwerken bevatten.
TempDB-gebruiken: geef aan of u een globale tijdelijke tabel of fysieke tabel wilt gebruiken als tussentijdse tabel voor upsert. De service maakt standaard gebruik van een globale tijdelijke tabel als de tussentijdse tabel en dit selectievakje is ingeschakeld.
Als u een grote hoeveelheid gegevens naar een SQL-database schrijft, schakelt u dit uit en geeft u een schemanaam op waaronder Data Factory een faseringstabel maakt om upstreamgegevens te laden en automatisch op te schonen na voltooiing. Zorg ervoor dat de gebruiker een tabelmachtiging heeft gemaakt in de database en de machtiging voor het schema wijzigt. Als dit niet is opgegeven, wordt een globale tijdelijke tabel gebruikt als fasering.Gebruikersdatabaseschema selecteren: Wanneer het TempDB- gebruiken niet is geselecteerd, geeft u een schemanaam op waaronder Data Factory een faseringstabel maakt om upstreamgegevens te laden en deze automatisch op te schonen na voltooiing. Zorg ervoor dat u een tabelmachtiging hebt gemaakt in de database en dat u de machtiging voor het schema wijzigt.
Notitie
U moet over de machtiging beschikken voor het maken en verwijderen van tabellen. Een tussentijdse tabel deelt standaard hetzelfde schema als een doeltabel.
sleutelkolommen: kies welke kolom wordt gebruikt om te bepalen of een rij uit de bron overeenkomt met een rij van het doel.
opgeslagen procedurenaam: selecteer de opgeslagen procedure in de vervolgkeuzelijst.
tabelvergrendeling bulksgewijs invoegen: kies Ja of Nee-. Gebruik deze instelling om de kopieerprestaties te verbeteren tijdens een bulksgewijze invoegbewerking op een tabel zonder index van meerdere clients. Ga voor meer informatie naar BULK INSERT (Transact-SQL)
script vooraf kopiëren: geef een script op voor de kopieeractiviteit die moet worden uitgevoerd voordat u in elke uitvoering gegevens naar een doeltabel schrijft. U kunt deze eigenschap gebruiken om de vooraf geladen gegevens op te schonen.
Time-out voor schrijfbatch: Geef de wachttijd op voor de batchinvoegbewerking om te voltooien voordat er een time-out optreedt. De toegestane waarde is tijdsverloop. De standaardwaarde is '00:30:00' (30 minuten).
Batchgrootte schrijven: geef het aantal rijen op dat in de SQL-tabel per batch moet worden ingevoegd. De toegestane waarde is een geheel getal (aantal rijen). Standaard bepaalt de service dynamisch de juiste batchgrootte op basis van de rijgrootte.
Maximum aantal gelijktijdige verbindingen: geef de bovengrens op van gelijktijdige verbindingen die tijdens de uitvoering van de activiteit tot stand zijn gebracht met het gegevensarchief. Geef alleen een waarde op wanneer u gelijktijdige verbindingen wilt beperken.
Kartering
Als u voor de configuratie van het tabblad Toewijzing geen SQL-database met automatisch tabel aanmaken als bestemming toepast, gaat u naar Toewijzing.
Als u een SQL-database gebruikt met de functie 'automatisch tabel maken' als bestemming, kunt u, met uitzondering van de configuratie in Toewijzing, het type voor de doelkolommen bewerken. Nadat u Schema's importerenhebt geselecteerd, kunt u het kolomtype opgeven in uw bestemming.
Het type voor ID kolom in de bron is bijvoorbeeld int en u kunt dit wijzigen in het type float bij het toewijzen aan de doelkolom.
Instellingen
Ga voor instellingen tabbladconfiguratie naar Andere instellingen configureren op het tabblad Instellingen.
Parallel kopiëren uit SQL-database
De SQL Database-connector in de kopieeractiviteit biedt ingebouwde gegevenspartitionering om parallel gegevens te kopiëren. U vindt opties voor gegevenspartitionering op het tabblad Bron van de kopieeractiviteit.
Wanneer u gepartitioneerde kopie inschakelt, voert de kopieeractiviteit parallelle query's uit op uw SQL-databasebron om gegevens te laden op partities. De parallelle graad wordt bepaald door de mate van kopieerparallelisme op het tabblad Instellingen voor kopieeractiviteit. Als u bijvoorbeeld mate van parallelle kopieerbewerking instelt op vier, genereert de service gelijktijdig vier query's op basis van de opgegeven partitieoptie en -instellingen en haalt elke query een deel van de gegevens op uit uw SQL-database.
U wordt aangeraden om parallel kopiëren met gegevenspartitionering in te schakelen, met name wanneer u grote hoeveelheden gegevens uit uw SQL-database laadt. Hier volgen voorgestelde configuraties voor verschillende scenario's. Wanneer u gegevens kopieert naar een bestandsgegevensarchief, is het raadzaam om naar een map te schrijven als meerdere bestanden (alleen mapnaam opgeven), in welk geval de prestaties beter zijn dan schrijven naar één bestand.
Scenario | Voorgestelde instellingen |
---|---|
Volledige laad van grote tabel, met fysieke partities. |
partitieoptie: fysieke partities van de tabel. Tijdens de uitvoering detecteert de service automatisch de fysieke partities en kopieert de gegevens per partitie. Als u wilt controleren of uw tabel een fysieke partitie heeft of niet, kunt u gebruik maken van deze query. |
Volledige belasting van een grote tabel zonder fysieke partities, maar wel met een geheel getal- of datum/tijd-kolom voor gegevenspartitionering. |
Partitieopties: Dynamisch bereik partitie. Kolom partitioneren (optioneel): Geef de kolom op die wordt gebruikt om gegevens te partitioneren. Als deze niet is opgegeven, wordt de index of primaire sleutelkolom gebruikt. Partitie bovengrens en partitie ondergrens (optioneel): Geef op of u de partitie stride wilt bepalen. Dit is niet voor het filteren van de rijen in de tabel, alle rijen in de tabel worden gepartitioneerd en gekopieerd. Als dit niet is opgegeven, detecteert kopieeractiviteit automatisch de waarden en kan het lang duren, afhankelijk van MIN- en MAX-waarden. Het wordt aanbevolen om bovengrens en ondergrens op te geven. Als de partitiekolom 'ID' bijvoorbeeld waarden heeft tussen 1 en 100 en u de ondergrens instelt op 20 en de bovengrens als 80, met parallelle kopie als 4, haalt de service gegevens op met 4 partities - id's in het bereik <=20, [21, 50], [51, 80] en >=81. |
Laad een grote hoeveelheid gegevens met behulp van een aangepaste query, zonder fysieke partities, terwijl u een geheel getal of een datum/datum/tijd-kolom gebruikt voor gegevenspartitionering. |
Partitieopties: dynamisch bereik partitie. Query: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .partitiekolom: Geef de kolom op die wordt gebruikt om gegevens te partitioneren. Bovengrens voor partitie en ondergrens voor partitie (optioneel): Geef op of u de partitie stride wilt bepalen. Dit is niet voor het filteren van de rijen in de tabel, alle rijen in het queryresultaat worden gepartitioneerd en gekopieerd. Als dit niet is opgegeven, detecteert kopieeractiviteit automatisch de waarde. Als de partitiekolom 'ID' bijvoorbeeld waarden heeft tussen 1 en 100, en u de ondergrens instelt op 20 en de bovengrens als 80, met parallelle kopie als 4, haalt de service gegevens op met 4 partities- id's in het bereik <=20, [21, 50], [51, 80] en >=81. Hier volgen meer voorbeeldquery's voor verschillende scenario's: • Voer een query uit op de hele tabel: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Queries uitvoeren op een tabel met kolomselectie en aanvullende where-clause filters: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Queries uitvoeren met subqueries: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Query uitvoeren met partitie in subquery: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Aanbevolen procedures voor het laden van gegevens met partitieoptie:
- Kies een onderscheidende kolom als partitiekolom (zoals primaire sleutel of unieke sleutel) om scheeftrekken van gegevens te voorkomen.
- Als de tabel een ingebouwde partitie heeft, gebruikt u de partitieoptie fysieke partities van tabel om betere prestaties te krijgen.
Voorbeeldquery om fysieke partitie te controleren
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]'
Als de tabel een fysieke partitie heeft, ziet u HasPartition als ja, zoals hieronder.
Tabelsamenvatting
De volgende tabellen bevatten meer informatie over de kopieeractiviteit in sql-database.
Bron
Naam | Beschrijving | Waarde | Vereist | JSON-scripteigenschap |
---|---|---|---|---|
verbinding | Uw verbinding met het brongegevensarchief. | <jouw verbinding> | Ja | verbinding |
Query gebruiken | De manier om gegevens te lezen. Pas tabel toe om gegevens uit de opgegeven tabel te lezen of pas query- toe om gegevens te lezen met behulp van SQL-query's. | • tabel • Query • opgeslagen procedure |
Ja | / |
Voor Tabel | ||||
schemanaam | Naam van het schema. | < de schemanaam > | Nee | schema |
tabelnaam | Naam van de tabel. | < jouw tabelnaam > | Nee | tafel |
Voor Query | ||||
Query | Geef de aangepaste SQL-query op om gegevens te lezen. Bijvoorbeeld: SELECT * FROM MyTable . |
< SQL-queries > | Nee | sqlReaderQuery |
Voor opgeslagen procedure | ||||
naam van opgeslagen procedure | Naam van de opgeslagen procedure. | < de naam van de opgeslagen procedure > | Nee | sqlReaderStoredProcedureName |
time-out voor query (minuten) | De time-out voor het uitvoeren van queryopdrachten is standaard 120 minuten. Als de parameter voor deze eigenschap is ingesteld, zijn toegestane waarden tijdspanne, zoals '02:00:00' (120 minuten). | tijdspanne | Nee | queryTimeout |
isolatieniveau | Hiermee geeft u het gedrag voor transactievergrendeling voor de SQL-bron op. | • Lees vastgelegd Ongecommitteerd lezen • Herhaalbare leesbewerking • Serialiseerbaar Momentopname |
Nee | isolatieniveau • ReadCommitted • ReadUncommitted • Herhaalbaar gelezen • Serializeerbaar •Momentopname |
partitieoptie | De opties voor gegevenspartitionering die worden gebruikt voor het laden van gegevens uit sql-database. | •Geen • Fysieke partities van tabel • Dynamisch bereik |
Nee | partitieOptie • FysiekePartitiesVanTabel • DynamicRange |
Voor dynamisch bereik | ||||
partitie kolomnaam | De naam van de bronkolom in geheel getal of datum/datum/tijd type (int , smallint , bigint , date , smalldatetime , datetime , datetime2 of datetimeoffset ) die wordt gebruikt door bereikpartitionering voor parallelle kopie. Als deze niet is opgegeven, wordt de index of de primaire sleutel van de tabel automatisch gedetecteerd en gebruikt als partitiekolom. Als u een query gebruikt om de brongegevens op te halen, koppelt u ?DfDynamicRangePartitionCondition in de WHERE-component. |
< de namen van de partitiekolommen > | Nee | partitiekolomnaam |
Bovengrens van partitie | De maximumwaarde van de partitiekolom voor het splitsen van partitiebereiken. Deze waarde wordt gebruikt om de partitie-stride te bepalen, niet om de rijen van de tabel te filteren. Alle rijen in de tabel of het queryresultaat worden gepartitioneerd en gekopieerd. Als dit niet is opgegeven, detecteert kopieeractiviteit automatisch de waarde. | < de bovengrens van de partitie > | Nee | partitionUpperBound |
Partitie ondergrens | De minimale waarde van de partitiekolom voor het splitsen van partitiebereiken. Deze waarde wordt gebruikt om de partitie-cyclus te bepalen, niet om de rijen in de tabel te filteren. Alle rijen in de tabel of het queryresultaat worden gepartitioneerd en gekopieerd. Als dit niet is opgegeven, detecteert kopieeractiviteit automatisch de waarde. | < ondergrens van je partitie > | Nee | partitieondergrens |
Aanvullende kolommen | Voeg meer gegevenskolommen toe om het relatieve pad of de statische waarde van bronbestanden op te slaan. Expressie wordt ondersteund voor de laatste. | •Naam •Waarde |
Nee | aanvullendeKolommen •naam • waarde |
Bestemming
Naam | Beschrijving | Waarde | Vereist | JSON-scripteigenschap |
---|---|---|---|---|
verbinding | Uw verbinding met de bestemmingsgegevensopslag. | <uw verbinding > | Ja | verbinding |
tabeloptie | Uw bestemmingsgegevenstabel. Selecteer uit Gebruik bestaande of Automatisch tabel maken. | • Bestaande gebruiken • Tabel automatisch maken |
Ja | schema tafel |
Schrijfgedrag configureren | Definieert het schrijfgedrag wanneer de bron bestanden is uit een bestandsgegevensarchief. | •Invoegen • Invoegen of bijwerken • Opgeslagen procedure |
Nee | schrijfgedrag •invoegen • upsert (toevoegen of bijwerken) • sqlWriterStoredProcedureName |
tabelvergrendeling bulksgewijs invoegen | Gebruik deze instelling om de kopieerprestaties te verbeteren tijdens een bulksgewijze invoegbewerking op een tabel zonder index van meerdere clients. | Ja of Nee (standaard) | Nee | sqlWriterUseTableLock: gebruik van tabelvergrendeling waar of onwaar (standaard) |
Voor Upsert- | ||||
TempDB- gebruiken | Of u een globale tijdelijke tabel of fysieke tabel wilt gebruiken als de tussentijdse tabel voor upsert. | geselecteerd (standaard) of niet geselecteerd | Nee | useTempDB: waar (standaard) of onwaar |
sleutelkolommen | Kies welke kolom wordt gebruikt om te bepalen of een rij uit de bron overeenkomt met een rij van het doel. | < jouw sleutelkolom> | Nee | Sleutels |
Voor opgeslagen procedure | ||||
naam van opgeslagen procedure | Deze eigenschap is de naam van de opgeslagen procedure waarmee gegevens uit de brontabel worden gelezen. De laatste SQL-instructie moet een SELECT-instructie zijn in de opgeslagen procedure. | < opgeslagen procedurenaam > | Nee | sqlWriterStoredProcedureName |
script vooraf kopiëren | Een script voor de kopieeractiviteit dat moet worden uitgevoerd voordat gegevens bij elke uitvoering in een doeltabel worden geschreven. U kunt deze eigenschap gebruiken om de vooraf geladen gegevens op te schonen. |
<script vooraf kopiëren> (tekenreeks) |
Nee | preCopyScript |
time-out voor schrijfbatch | De wachttijd voordat de batchinvoegbewerking is voltooid voordat er een time-out optreedt. De toegestane waarde is tijdspanne. De standaardwaarde is '00:30:00' (30 minuten). | tijdspanne | Nee | writeBatchTimeout |
Schrijf batchgrootte | Het aantal rijen dat moet worden ingevoegd in de SQL-tabel per batch. Standaard bepaalt de service dynamisch de juiste batchgrootte op basis van de rijgrootte. |
<aantal rijen> (geheel getal) |
Nee | writeBatchSize |
Maximum aantal gelijktijdige verbindingen | De bovengrens van gelijktijdige verbindingen die tijdens de uitvoering van de activiteit tot stand zijn gebracht met het gegevensarchief. Geef alleen een waarde op wanneer u gelijktijdige verbindingen wilt beperken. |
<bovengrens van gelijktijdige verbindingen> (geheel getal) |
Nee | maximaalGelijktijdigeVerbindingen |
Verwante inhoud
- Overzicht van de SQL-database