Konfigurere SQL-database i en kopiaktivitet (forhåndsvisning)
Denne artikkelen beskriver hvordan du bruker kopieringsaktiviteten i datasamlebåndet til å kopiere data fra og til SQL-database.
Støttet konfigurasjon
Hvis du vil ha konfigurasjonen av hver fane under kopieringsaktivitet, kan du gå til følgende inndelinger.
Generelt
Se Generelle innstillinger veiledning for å konfigurere generelt innstillinger-fanen.
Kilde
Følgende egenskaper støttes for SQL-database under fanen Kilde i en kopiaktivitet.
Følgende egenskaper er nødvendige:
Connection: Velg en eksisterende SQL-database som refererer til trinnet i denne artikkelen.
Brukfor spørring: Du kan velge tabell, spørringeller lagret prosedyre. Listen nedenfor beskriver konfigurasjonen av hver innstilling:
tabell: Angi navnet på SQL-databasen som skal leses. Velg en eksisterende tabell fra rullegardinlisten, eller velg Angi manuelt for å angi skjema- og tabellnavnet.
spørring: Angi den egendefinerte SQL-spørringen som skal leses data. Et eksempel er
select * from MyTable
. Eller velg blyantikonet du vil redigere i koderedigeringsprogrammet.Lagret prosedyre: Velg den lagrede prosedyren fra rullegardinlisten.
Under Avansertkan du angi følgende felt:
tidsavbrudd for spørring (minutter): Angi tidsavbruddet for kjøring av spørringskommando, standard er 120 minutter. Hvis parameteren er angitt for denne egenskapen, er tillatte verdier tidsrom, for eksempel 02:00:00( 120 minutter).
Isoleringsnivå: Angir virkemåten for transaksjonslåsing for SQL-kilden. De tillatte verdiene er: Lese, Lese uforpliktende, Lese, Serialiserbareller øyeblikksbilde. Se IsolationLevel Enum for mer informasjon.
partisjonsalternativ: Angi alternativene for datapartisjonering som brukes til å laste inn data fra SQL-database. Tillatte verdier er: Ingen (standard), Fysiske partisjoner i tabellenog dynamisk område. Når et partisjonsalternativ er aktivert (det vil eksempel: ikke Ingen), kontrolleres graden av parallellitet for samtidig innlasting av data fra en SQL-database av grad av kopieringsparallalisme i fanen innstillinger for kopieringsaktivitet.
Ingen: Velg denne innstillingen for ikke å bruke en partisjon.
Fysiske partisjoner i tabellen: Når du bruker en fysisk partisjon, bestemmes partisjonskolonnen og mekanismen automatisk basert på den fysiske tabelldefinisjonen.
dynamisk område: Når du bruker spørring med parallellaktivert, er parameteren for områdepartisjon(
?DfDynamicRangePartitionCondition
) nødvendig. Eksempelspørring:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.partisjonskolonnenavn: Angi navnet på kildekolonnen i heltall eller dato/dato/klokkeslett type (
int
,smallint
,bigint
,date
,smalldatetime
,datetime
,datetime2
ellerdatetimeoffset
) som brukes av områdepartisjonering for parallell kopi. Hvis det ikke er angitt, oppdages indeksen eller primærnøkkelen for tabellen automatisk og brukes som partisjonskolonne.Hvis du bruker en spørring til å hente kildedataene, kan du koble
?DfDynamicRangePartitionCondition
i WHERE-setningsdelen. Du kan for eksempel se delen Parallell kopi fra SQL-database.Partisjons øvre bundet: Angi maksimumsverdien for partisjonskolonnen for deling av partisjonsområde. Denne verdien brukes til å bestemme partisjonssteget, ikke for filtrering av radene i tabellen. Alle rader i tabellen eller spørringsresultatet blir partisjonert og kopiert. Hvis det ikke er angitt, oppdager kopieringsaktivitet automatisk verdien. Du kan for eksempel se delen Parallell kopi fra SQL-database.
Partisjon nedre grense: Angi minimumsverdien for partisjonskolonnen for deling av partisjonsområde. Denne verdien brukes til å bestemme partisjonssteget, ikke for filtrering av radene i tabellen. Alle rader i tabellen eller spørringsresultatet blir partisjonert og kopiert. Hvis det ikke er angitt, oppdager kopieringsaktivitet automatisk verdien. Du kan for eksempel se delen Parallell kopi fra SQL-database.
Flere kolonner: Legg til flere datakolonner for å lagre kildefilens relative bane eller statiske verdi. Uttrykket støttes for sistnevnte. Hvis du vil ha mer informasjon, kan du gå til Legge til flere kolonner under kopiering.
Destinasjon
Følgende egenskaper støttes for SQL-database under Mål-fanen i en kopiaktivitet.
Følgende egenskaper er nødvendige:
Connection: Velg en eksisterende SQL-database som refererer til trinnet i denne artikkelen.
tabellalternativ: Velg fra Bruk eksisterende eller Opprett tabell automatisk.
Hvis du velger Bruk eksisterende:
- tabell: Angi navnet på SQL-databasen for å skrive data. Velg en eksisterende tabell fra rullegardinlisten, eller velg Angi manuelt for å angi skjema- og tabellnavnet.
Hvis du velger Opprett tabell automatisk:
- tabell: Tabellen opprettes automatisk (hvis ikke-eksisterende) i kildeskjemaet, som ikke støttes når lagret prosedyre brukes som skrivevirkemåte.
Under Avansertkan du angi følgende felt:
Virkemåte for skriving: Definerer skrivevirkemåten når kilden er filer fra et filbasert datalager. Du kan velge Sett inn, Upsert eller Lagret prosedyre.
Sett inn: Velg dette alternativet hvis kildedataene er satt inn.
Upsert: Velg dette alternativet hvis kildedataene har både innsettinger og oppdateringer.
Bruk TempDB-: Angi om du vil bruke en global midlertidig tabell eller fysisk tabell som midlertidig tabell for upsert. Som standard bruker tjenesten den globale midlertidige tabellen som midlertidig tabell, og denne avmerkingsboksen er valgt.
Hvis du skriver store mengder data inn i SQL-databasen, fjerner du merket for dette og angir et skjemanavn der Data Factory oppretter en oppsamlingstabell for å laste opp oppstrøms data og automatisk rydde opp ved fullføring. Kontroller at brukeren har opprettet tabelltillatelse i databasen og endrer tillatelsen for skjemaet. Hvis ikke angitt, brukes en global temp-tabell som oppsamling.Velg DB-skjema for bruker: Når Bruk TempDB- ikke er valgt, angir du et skjemanavn der Data Factory oppretter en oppsamlingstabell for å laste opp oppstrømsdata og automatisk rydde dem opp ved fullføring. Kontroller at du har tillatelse til å opprette tabeller i databasen og endre tillatelsen for skjemaet.
Notat
Du må ha tillatelse til å opprette og slette tabeller. Som standard vil en midlertidig tabell dele samme skjema som en måltabell.
Nøkkelkolonner: Velg hvilken kolonne som skal brukes til å avgjøre om en rad fra kilden samsvarer med en rad fra målet.
lagret prosedyrenavn: Velg den lagrede prosedyren fra rullegardinlisten.
Lås tabelllås for masseutsletting: Velg Ja eller Ingen. Bruk denne innstillingen til å forbedre kopieringsytelsen under en masseinnsettingsoperasjon i en tabell uten indeks fra flere klienter. Hvis du vil ha mer informasjon, kan du gå til MASSEINNSETTING (Transact-SQL)
forhåndskopiert skript: Angi et skript for kopieringsaktiviteten som skal utføres før du skriver data inn i en måltabell i hver kjøring. Du kan bruke denne egenskapen til å rydde opp i de forhåndslastede dataene.
Skrive satsvis tidsavbrudd: Angi ventetiden for at den satsvise innsettingsoperasjonen skal fullføres før den blir tidsavbrutt. Den tillatte verdien er timespan. Standardverdien er 00:30:00 (30 minutter).
Skrive bunkestørrelse: Angi antall rader som skal settes inn i SQL-tabellen per bunke. Den tillatte verdien er heltall (antall rader). Som standard bestemmer tjenesten dynamisk riktig satsvis størrelse basert på radstørrelsen.
Maksimalt antall samtidige tilkoblinger: Angi den øvre grensen for samtidige tilkoblinger som ble opprettet i datalageret under aktivitetskjøringen. Angi en verdi bare når du vil begrense samtidige tilkoblinger.
Kartlegging
Hvis du ikke bruker SQL-database med automatisk oppretting av tabell som mål, går du til
Hvis du bruker SQL-database med automatisk oppretting av tabell som mål, bortsett fra konfigurasjonen i Tilordning, kan du redigere typen for målkolonnene. Når du har valgt Importer skjemaer, kan du angi kolonnetypen i målet.
Typen for ID kolonne i kilde er for eksempel heltall, og du kan endre den til flyttype når du tilordner til målkolonnen.
Innstillinger
Hvis du vil ha Innstillinger fanekonfigurasjon, kan du gå til Konfigurere de andre innstillingene under innstillinger.
Parallell kopi fra SQL-database
SQL-databasekoblingen i kopieringsaktivitet gir innebygd datapartisjonering for å kopiere data parallelt. Du finner alternativer for datapartisjonering på fanen Kilde i kopiaktiviteten.
Når du aktiverer partisjonert kopi, kjører kopieringsaktivitet parallelle spørringer mot SQL-databasekilden for å laste inn data etter partisjoner. Den parallelle graden styres av Grad av kopi parallellisme i fanen innstillinger for kopieringsaktivitet. Hvis du for eksempel angir Grad av kopi parallellisme til fire, genererer og kjører tjenesten samtidig fire spørringer basert på det angitte partisjonsalternativet og innstillingene, og hver spørring henter en del av dataene fra SQL-databasen.
Du foreslås å aktivere parallell kopi med datapartisjonering, spesielt når du laster inn store mengder data fra SQL-databasen. Følgende er foreslåtte konfigurasjoner for ulike scenarioer. Når du kopierer data til filbasert datalager, anbefales det å skrive til en mappe som flere filer (bare angi mappenavn), i så fall er ytelsen bedre enn å skrive til én enkelt fil.
Scenario | Foreslåtte innstillinger |
---|---|
Full belastning fra store tabeller, med fysiske partisjoner. |
partisjonsalternativ: Fysiske partisjoner i tabellen. Under kjøringen oppdager tjenesten automatisk de fysiske partisjonene, og kopierer data etter partisjoner. Hvis du vil kontrollere om tabellen har fysisk partisjon eller ikke, kan du referere til denne spørringen. |
Full belastning fra store tabeller, uten fysiske partisjoner, mens med et heltall eller datetime-kolonne for datapartisjonering. |
partisjonsalternativer: Dynamisk områdepartisjon. partisjonskolonne (valgfritt): Angi kolonnen som brukes til å partisjonere data. Hvis ikke angitt, brukes indeksen eller primærnøkkelkolonnen. partisjonens øvre grense og partisjonen som er lavere bundet (valgfritt): Angi om du vil bestemme partisjonssteget. Dette er ikke for filtrering av radene i tabellen, alle radene i tabellen blir partisjonert og kopiert. Hvis det ikke er angitt, oppdager kopieringsaktivitet automatisk verdiene, og det kan ta lang tid, avhengig av MIN- og MAX-verdier. Det anbefales å angi øvre grense og nedre grense. Hvis for eksempel partisjonskolonnen «ID» har verdier fra 1 til 100, og du angir den nedre grensen som 20 og øvre grense som 80, med parallell kopi som 4, henter tjenesten data etter 4 partisjoner – ID-er i området <=20, [21, 50], [51, 80] og >=81, henholdsvis. |
Last inn en stor mengde data ved hjelp av en egendefinert spørring, uten fysiske partisjoner, mens med et heltall eller en date/datetime-kolonne for datapartisjonering. |
partisjonsalternativer: Dynamisk områdepartisjon. spørring: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .partisjonskolonne: Angi kolonnen som brukes til å partisjonere data. partisjonens øvre grense og partisjonen som er lavere bundet (valgfritt): Angi om du vil bestemme partisjonssteget. Dette er ikke for filtrering av radene i tabellen, alle radene i spørringsresultatet blir partisjonert og kopiert. Hvis det ikke er angitt, oppdager kopieringsaktivitet automatisk verdien. Hvis for eksempel partisjonskolonnen «ID» har verdier fra 1 til 100, og du angir den nedre grensen som 20 og øvre grense som 80, med parallell kopi som 4, henter tjenesten data etter 4 partisjoner- ID-er i området <=20, [21, 50], [51, 80] og >=81, henholdsvis. Her er flere eksempelspørringer for ulike scenarioer: • Spør hele tabellen: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Spørring fra en tabell med kolonnevalg og flere der-setningsfiltre: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Spørring med delspørringer: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Spørring med partisjon i delspørring: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Anbefalte fremgangsmåter for innlasting av data med partisjonsalternativ:
- Velg distinkt kolonne som partisjonskolonne (for eksempel primærnøkkel eller unik nøkkel) for å unngå dataskyvhet.
- Hvis tabellen har innebygd partisjon, kan du bruke partisjonsalternativet Fysiske partisjoner i tabellen for å få bedre ytelse.
Eksempelspørring for å kontrollere fysisk partisjon
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 fysisk partisjon, vil du se «HasPartition» som «ja» som følgende.
Tabellsammendrag
Tabellene nedenfor inneholder mer informasjon om kopieringsaktiviteten i SQL-databasen.
Kilde
Navn | Beskrivelse | Verdi | Påkrevd | JSON-skriptegenskap |
---|---|---|---|---|
tilkobling | Tilkoblingen til kildedatalageret. | <tilkoblingen> | Ja | forbindelse |
Bruk | Måten å lese data på. Bruk tabell for å lese data fra den angitte tabellen, eller bruk Spørring for å lese data ved hjelp av SQL-spørringer. | • tabell • spørring • Lagret prosedyre |
Ja | / |
for tabell | ||||
skjemanavn | Navnet på skjemaet. | < skjemanavnet > | Nei | skjema |
tabellnavn | Navnet på tabellen. | < tabellnavnet > | Nei | bord |
for spørring | ||||
spørring | Angi den egendefinerte SQL-spørringen som skal leses data. Eksempel: SELECT * FROM MyTable . |
< SQL-spørringer > | Nei | sqlReaderQuery |
For lagret prosedyre | ||||
navn på lagret prosedyre | Navnet på den lagrede prosedyren. | < navnet på den lagrede prosedyren > | Nei | sqlReaderStoredProcedureName |
Tidsavbrudd for spørring (minutter) | Tidsavbruddet for kjøring av spørringskommando, standard er 120 minutter. Hvis parameteren er angitt for denne egenskapen, er tillatte verdier tidsrom, for eksempel 02:00:00( 120 minutter). | tidsrom | Nei | queryTimeout |
isoleringsnivå | Angir virkemåten for transaksjonslås for SQL-kilden. | • Lese forpliktet • Les uforpliktende • Les gjentatt •Serialiseres •Snapshot |
Nei | isolationLevel: • ReadCommitted • ReadUncommitted • RepeatableRead •Serialiseres •Snapshot |
alternativet partisjon | Alternativene for datapartisjonering som brukes til å laste inn data fra SQL-database. | •Ingen • Fysiske partisjoner av tabellen • Dynamisk område |
Nei | partitionOption: • PhysicalPartitionsOfTable • DynamicRange |
For dynamisk område | ||||
partisjonskolonnenavn | Navnet på kildekolonnen i heltall eller date/datetime type (int , smallint , bigint , date , smalldatetime , datetime , datetime2 eller datetimeoffset ) som brukes av områdepartisjonering for parallell kopi. Hvis det ikke er angitt, oppdages indeksen eller primærnøkkelen for tabellen automatisk og brukes som partisjonskolonne. Hvis du bruker en spørring til å hente kildedataene, kan du koble ?DfDynamicRangePartitionCondition i WHERE-setningsdelen. |
< navnene på partisjonskolonnen > | Nei | partitionColumnName |
partisjonen øverst bundet | Maksimumsverdien for partisjonskolonnen for deling av partisjonsområde. Denne verdien brukes til å bestemme partisjonssteget, ikke for filtrering av radene i tabellen. Alle rader i tabellen eller spørringsresultatet blir partisjonert og kopiert. Hvis det ikke er angitt, oppdager kopieringsaktivitet automatisk verdien. | < partisjonen øverst bundet > | Nei | partitionUpperBound |
Partisjon nedre grense | Minimumsverdien for partisjonskolonnen for deling av partisjonsområde. Denne verdien brukes til å bestemme partisjonssteget, ikke for filtrering av radene i tabellen. Alle rader i tabellen eller spørringsresultatet blir partisjonert og kopiert. Hvis det ikke er angitt, oppdager kopieringsaktivitet automatisk verdien. | < partisjonen nedre grense > | Nei | partitionLowerBound |
flere kolonner | Legg til flere datakolonner for å lagre kildefilens relative bane eller statiske verdi. Uttrykket støttes for sistnevnte. | •Navn •Verdi |
Nei | additionalColumns: •navn •verdi |
Destinasjon
Navn | Beskrivelse | Verdi | Påkrevd | JSON-skriptegenskap |
---|---|---|---|---|
tilkobling | Tilkoblingen til måldatalageret. | <tilkoblingen > | Ja | forbindelse |
alternativet tabell | Måldatatabellen. Velg fra Bruk eksisterende eller Opprett tabell automatisk. | • Bruk eksisterende • Opprett tabell automatisk |
Ja | skjema bord |
Virkemåte for skriving | Definerer skrivevirkemåten når kilden er filer fra et filbasert datalager. | •Sette inn • Oppsett • Lagret prosedyre |
Nei | writeBehavior: •sette inn • oppset • sqlWriterStoredProcedureName |
Lås tabelllås for masseinnset | Bruk denne innstillingen til å forbedre kopieringsytelsen under en masseinnsettingsoperasjon i en tabell uten indeks fra flere klienter. | Ja eller Nei (standard) | Nei | sqlWriterUseTableLock: sann eller usann (standard) |
For Upsert | ||||
Bruke TempDB | Om du vil bruke en global midlertidig tabell eller fysisk tabell som midlertidig tabell for upsert. | valgt (standard) eller umerket | Nei | brukTempDB: sann (standard) eller usann |
nøkkelkolonner | Velg hvilken kolonne som skal brukes til å avgjøre om en rad fra kilden samsvarer med en rad fra målet. | < nøkkelkolonnen> | Nei | Nøkler |
For lagret prosedyre | ||||
navn på lagret prosedyre | Denne egenskapen er navnet på den lagrede prosedyren som leser data fra kildetabellen. Den siste SQL-setningen må være en SELECT-setning i den lagrede prosedyren. | < lagret prosedyrenavn > | Nei | sqlWriterStoredProcedureName |
forhåndskopier skript | Et skript for kopier aktivitet som skal utføres før du skriver data til en måltabell i hver kjøring. Du kan bruke denne egenskapen til å rydde opp i de forhåndslastede dataene. |
<forhåndskopier skript> (streng) |
Nei | preCopyScript |
Skrive tidsavbrudd for gruppe | Ventetiden for at den satsvise innsettingsoperasjonen skal fullføres før den blir tidsavbrutt. Den tillatte verdien er timespan. Standardverdien er 00:30:00 (30 minutter). | tidsrom | Nei | writeBatchTimeout |
Skrive bunkestørrelse | Antall rader som skal settes inn i SQL-tabellen per bunke. Som standard bestemmer tjenesten dynamisk riktig satsvis størrelse basert på radstørrelsen. |
<antall rader> (heltall) |
Nei | writeBatchSize |
Maks. samtidige tilkoblinger | Den øvre grensen for samtidige tilkoblinger som ble opprettet i datalageret under aktivitetskjøringen. Angi en verdi bare når du vil begrense samtidige tilkoblinger. |
<øvre grense for samtidige tilkoblinger> (heltall) |
Nei | maxConcurrentConnections |