Så här konfigurerar du Azure SQL Database Managed Instance i kopieringsaktivitet
Den här artikeln beskriver hur du använder kopieringsaktiviteten i datapipelinen för att kopiera data från och till Azure SQL Database Managed Instance.
Konfiguration som stöds
För konfigurationen av varje flik under kopieringsaktivitet går du till följande avsnitt.
Allmänt
Se vägledningen allmänna inställningar för att konfigurera fliken Allmänna inställningar.
Källa
Följande egenskaper stöds för Azure SQL Database Managed Instance under fliken Källa för en kopieringsaktivitet.
Följande egenskaper krävs:
Datalagertyp: Välj Extern.
Anslut ion: Välj en Azure SQL Database Managed Instance-anslutning i anslutningslistan. Om anslutningen inte finns skapar du en ny Azure SQL Database Managed Instance-anslutning genom att välja Ny.
Anslut ionstyp: Välj Azure SQL Database Managed Instance.
Använd fråga: Ange hur data ska läsas. Du kan välja Tabell, Fråga eller Lagrad procedur. I följande lista beskrivs konfigurationen för varje inställning:
Tabell: Läsa data från den angivna tabellen. Välj källtabellen i listrutan eller välj Redigera för att ange den manuellt.
Fråga: 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: Använd 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.
Namn på lagrad procedur: Välj den lagrade proceduren eller ange namnet på den lagrade proceduren manuellt när du väljer Redigera för att läsa data från källtabellen.
Parametrar för lagrad procedur: Ange värden för parametrar för lagrad procedur. Tillåtna värden är namn- eller värdepar. Parametrarnas namn och hölje måste matcha namnen och höljet för de lagrade procedureparametrarna. Du kan välja Importera parametrar för att hämta parametrarna för lagrad procedur.
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, standardvärdet är 120 minuter. Om en parameter anges 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, Snapshot. Om den inte anges används databasens standardisoleringsnivå. Mer information finns i IsolationLevel Enum.
Partitionsalternativ: Ange de datapartitioneringsalternativ som används för att läsa in data från Azure SQL Database Managed Instance. Tillåtna värden är: Ingen (standard), Fysiska partitioner av tabellen och Dynamiskt intervall. När ett partitionsalternativ är aktiverat (dvs. inte Ingen) styrs graden av parallellitet för samtidig inläsning av data från Azure SQL Database Managed Instance 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å definitionen av den fysiska tabellen.
Dynamiskt intervall: När du använder en fråga med parallellaktiverad krävs intervallpartitionsparametern(
?DfDynamicRangePartitionCondition
). Exempelfråga:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.Partitionskolumnnamn: Ange namnet på källkolumnen i heltal eller datum/datetime-typ (
int
, ,smallint
bigint
,smalldatetime
date
,datetime
, ,datetime2
ellerdatetimeoffset
) som används av intervallpartitionering för parallell kopiering. 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 kopplar
?DfDynamicRangePartitionCondition
du in WHERE-satsen. Ett exempel finns i avsnittet Parallell kopia från Azure SQL Database Managed Instance .Partitionens övre gräns: Ange 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. Ett exempel finns i avsnittet Parallell kopia från Azure SQL Database Managed Instance .
Partition med lägre gräns: 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 Parallell kopia från Azure SQL Database Managed Instance .
Ytterligare kolumner: Lägg till ytterligare datakolumner för att lagra källfilernas relativa sökväg eller statiska värde. Uttrycket stöds för det senare.
Observera följande:
- Om Frågan har angetts för källan kör kopieringsaktiviteten den här frågan mot azure SQL Database Managed Instance-källan för att hämta data. Du kan också ange en lagrad procedur genom att ange parametrarna För lagrad procedur och Parametrar för lagrad procedur om den lagrade proceduren tar parametrar.
- När du använder den lagrade proceduren i källan för att hämta data bör du tänka på att om den lagrade proceduren är utformad som att returnera ett annat schema när ett annat parametervärde skickas in, kan det uppstå ett fel eller ett oväntat resultat när du importerar schemat från användargränssnittet eller när du kopierar data till SQL Database med automatisk skapande av tabeller.
Mål
Följande egenskaper stöds för Azure SQL Database Managed Instance under fliken Mål för en kopieringsaktivitet.
Följande egenskaper krävs:
Datalagertyp: Välj Extern.
Anslut ion: Välj en Azure SQL Database Managed Instance-anslutning i anslutningslistan. Om anslutningen inte finns skapar du en ny Azure SQL Database Managed Instance-anslutning genom att välja Ny.
Anslut ionstyp: Välj Azure SQL Database Managed Instance.
Tabellalternativ: Du kan välja Använd befintlig för att använda den angivna tabellen. Eller välj Skapa tabell automatiskt för att automatiskt skapa en måltabell om tabellen inte finns i källschemat och observera att den här markeringen inte stöds när den lagrade proceduren används som skrivbeteende.
Om du väljer Använd befintlig:
- Tabell: Välj tabellen i måldatabasen i listrutan. Eller markera Redigera för att ange tabellnamnet manuellt.
Om du väljer: Skapa tabell automatiskt:
- Tabell: Ange namnet på den automatiskt skapade måltabellen.
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 Lagrad procedur.
Infoga: Välj det här alternativet använd infogningsbeteende för att läsa in data i Azure SQL Database Managed Instance.
Upsert: Välj det här alternativet använd upsert-skrivbeteende för att läsa in data i Azure SQL Database Managed Instance.
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 egenskapen är markerad.
Välj användar-DB-schema: När du inte har valt Använd TempDB anger du interimschemat för att skapa en interimtabell om en fysisk tabell används.
Kommentar
Du måste ha behörighet att skapa och ta bort tabeller. Som standard delar en interimtabell samma schema som en måltabell.
Nyckelkolumner: Ange kolumnnamnen för unik radidentifiering. Antingen kan en enskild nyckel eller en serie nycklar användas. Om den inte anges används primärnyckeln.
Lagrad procedur: Använd den lagrade proceduren som definierar hur du använder källdata i en måltabell. Den här lagrade proceduren anropas per batch. För åtgärder som bara körs en gång och inte har något att göra med källdata, till exempel ta bort eller trunkera, använder du egenskapen Förkopiera skript .
Namn på lagrad procedur: Välj den lagrade proceduren eller ange namnet på den lagrade proceduren manuellt när du kontrollerar redigera för att läsa data från källtabellen.
Parametrar för lagrad procedur:
- Tabelltyp: Ange det tabelltypnamn som ska användas i den lagrade proceduren. Kopieringsaktiviteten gör data som flyttas tillgängliga i en tillfällig tabell med den här tabelltypen. Lagrad procedurkod kan sedan sammanfoga data som kopieras med befintliga data.
- Parameternamn för tabelltyp: Ange parameternamnet för den tabelltyp som anges i den lagrade proceduren.
- Parametrar: Ange värden för parametrar för lagrad procedur. Tillåtna värden är namn- eller värdepar. Parametrarnas namn och hölje måste matcha namnen och höljet för de lagrade procedureparametrarna. Du kan välja Importera parametrar för att hämta parametrarna för lagrad procedur.
Massinfogningstabelllås: Välj Ja eller Nej (standard). 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. Du kan ange den här egenskapen när du väljer Infoga eller Upsert som skrivbeteende. Mer information finns i BULK INSERT (Transact-SQL)
Förkopieringsskript: Ange ett skript för kopieringsaktivitet som ska köras innan du skriver data till en måltabell i varje körning. Du kan använda den här egenskapen för att rensa inlästa data.
Tidsgräns för skrivning av batch: Ange väntetiden för batchinfogningsåtgärden som ska slutföras innan tidsgränsen uppnås. Det tillåtna värdet är tidsintervall. Om inget värde anges är tidsgränsen som standard "02:00:00".
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: 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.
Mappning
För konfigurationen av fliken Mappning går du till Mappning om du inte använder Azure SQL Database Managed Instance med tabellen för automatisk skapande som mål.
Om du använder Azure SQL Database Managed Instance 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-kolumnen 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.
Parallell kopiering från Azure SQL Database Managed Instance
Azure SQL Database Managed Instance-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 din Azure SQL Database Managed Instance-källa 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 din Hanterade Azure SQL Database-instans.
Du rekommenderas att aktivera parallell kopiering med datapartitionering, särskilt när du läser in stora mängder data från din Hanterade Azure SQL Database-instans. 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.
Scenario | Föreslagna inställningar |
---|---|
Full belastning från en stor tabell med fysiska partitioner. | Partitionsalternativ: Fysiska partitioner i tabellen. Under körningen identifierar tjänsten automatiskt de fysiska partitionerna och kopierar data efter partitioner. Om du vill kontrollera om tabellen har fysisk partition eller inte kan du läsa den här frågan. |
Fullständig belastning från en stor tabell, utan fysiska partitioner, med ett heltal eller en datetime-kolumn 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. Partitionens övre gräns och partitionens nedre gräns (valfritt): Ange om du vill fastställa partitionssteget. Detta är inte för att filtrera raderna i tabellen, alla rader i tabellen partitioneras och kopieras. Om det inte anges identifierar kopieringsaktivitet automatiskt värdena. 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. Partitionens övre gräns och partitionens nedre gräns (valfritt): Ange om du vill fastställa partitionssteget. 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: • Fråga hela tabellen: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Fråga från en tabell med kolumnval och ytterligare where-clause-filter: 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ågor: 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
Se följande tabell för sammanfattningen och mer information om kopieringsaktiviteten för Azure SQL Database Managed Instance.
Källinformation
Name | Beskrivning | Värde | Obligatoriskt | JSON-skriptegenskap |
---|---|---|---|---|
Typ av datalager | Din datalagertyp. | Externt | Ja | / |
Anslutning | Din anslutning till källdatalagret. | < din anslutning > | Ja | anslutning |
Anslutningstyp | Din anslutningstyp. Välj Azure SQL Database Managed Instance. | Hanterad Azure SQL Database-instans | Ja | / |
Använda fråga | Den anpassade SQL-frågan för att läsa data. | •Tabell •Fråga • Lagrad procedur |
Ja | / |
Tabell | Källdatatabellen. | < namnet på tabellen> | Nej | Schemat table |
Fråga | Den anpassade SQL-frågan för att läsa data. | < din fråga > | Nej | sqlReaderQuery |
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. | < namn på lagrad procedur > | Nej | sqlReaderStoredProcedureName |
Parameter för lagrad procedur | Dessa parametrar är för den lagrade proceduren. Tillåtna värden är namn- eller värdepar. Parametrarnas namn och hölje måste matcha namnen och höljet för de lagrade procedureparametrarna. | < namn- eller värdepar > | Nej | storedProcedureParameters |
Tidsgräns för frågor | Tidsgränsen för körning av frågekommandon. | tidsintervall (standardvärdet är 120 minuter) |
Nej | queryTimeout |
Isoleringsnivå | Anger transaktionslåsningsbeteendet för SQL-källan. | • Läs bekräftad • Läs obekräftade • Repeterbar läsning •Serialiseras •Ögonblicksbild |
Nej | isolationLevel: • ReadCommitted • ReadUncommitted • RepeatableRead •Serialiseras •Ögonblicksbild |
Partitionsalternativ | De datapartitioneringsalternativ som används för att läsa in data från Azure SQL Database Managed Instance. | • Ingen (standard) • Fysiska partitioner av tabellen • Dynamiskt intervall |
Nej | partitionOption: • Ingen (standard) • PhysicalPartitionsOfTable • DynamicRange |
Partitionskolumnnamn | Namnet på källkolumnen i heltal eller datum/datetime-typ (int , , bigint smallint , date , smalldatetime , datetime , datetime2 eller datetimeoffset ) som används av intervallpartitionering för parallell kopiering. 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 kopplar ?DfDynamicRangePartitionCondition du in WHERE-satsen. |
< dina partitionskolumnnamn > | Nej | partitionColumnName |
Partitionens ö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 | partitionUpperBound |
Partition, nedre gräns | 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 | partitionLowerBound |
Ytterligare kolumner | Lägg till ytterligare datakolumner för att lagra källfilernas relativa sökväg eller statiska värde. Uttrycket stöds för det senare. | • Namn •Värde |
Nej | additionalColumns: •Namn •Värde |
Målinformation
Name | Beskrivning | Värde | Obligatoriskt | JSON-skriptegenskap |
---|---|---|---|---|
Typ av datalager | Din datalagertyp. | Externt | Ja | / |
Anslutning | Din anslutning till måldatalagret. | < din anslutning > | Ja | anslutning |
Anslutningstyp | Din anslutningstyp. Välj Azure SQL Database Managed Instance. | Hanterad Azure SQL Database-instans | Ja | / |
Tabellalternativ | Anger om måltabellen ska skapas automatiskt om den inte finns baserat på källschemat. | • Använd befintliga • Skapa tabell automatiskt |
Ja | tableOption: • Skapa automatiskt |
Tabell | Måldatatabellen. | <namnet på tabellen> | Ja | Schemat table |
Skrivbeteende | Skrivbeteendet för kopieringsaktivitet för att läsa in data till Azure SQL Database Managed Instance-databasen. | •Infoga • Upsert • Lagrad procedur |
Nej | writeBehavior: •Infoga • upsert sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureTableTypeParameterName, storedProcedureParameters |
Använda TempDB | Om du vill använda den globala temporära tabellen eller den fysiska tabellen som interimtabell för upsert. | markerad (standard) eller omarkerad | Nej | useTempDB: sant (standard) eller falskt |
Välj användar-DB-schema | Interimschemat för att skapa interimtabell om fysisk tabell används. Obs! Användaren måste ha behörighet att skapa och ta bort tabellen. Som standard delar interimtabellen samma schema som måltabellen. Använd när du inte väljer Använd TempDB. | markerad (standard) eller omarkerad | Nej | interimSchemaName |
Nyckelkolumner | Kolumnnamnen för unik radidentifiering. Antingen kan en enskild nyckel eller en serie nycklar användas. Om den inte anges används primärnyckeln. | < din nyckelkolumn> | Nej | keys |
Namn på lagrad procedur | Namnet på den lagrade procedur som definierar hur källdata ska tillämpas i en måltabell. Den här lagrade proceduren anropas per batch. För åtgärder som bara körs en gång och inte har något att göra med källdata, till exempel ta bort eller trunkera, använder du egenskapen Förkopiera skript . | < namnet på den lagrade proceduren > | Nej | sqlWriterStoredProcedureName |
Tabelltyp | Tabelltypens namn som ska användas i den lagrade proceduren. Kopieringsaktiviteten gör data som flyttas tillgängliga i en tillfällig tabell med den här tabelltypen. Lagrad procedurkod kan sedan sammanfoga data som kopieras med befintliga data. | < tabelltypens namn > | Nej | sqlWriterTableType |
Parameternamn för tabelltyp | Parameternamnet för den tabelltyp som anges i den lagrade proceduren. | < parameternamnet för tabelltypen > | Nej | storedProcedureTableTypeParameterName |
Parameters | Parametrar för den lagrade proceduren. Tillåtna värden är namn- och värdepar. Namn och hölje för parametrar måste matcha namnen och höljet för de lagrade procedureparametrarna. | < namn- och värdepar > | Nej | storedProcedureParameters |
Massinfogningstabelllå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örkopieringsskript | Ett skript för kopieringsaktivitet 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. | < förkopieringsskript > (sträng) |
Nej | preCopyScript |
Tidsgräns för skrivning av batch | Väntetiden för att batchinfogningsåtgärden ska slutföras innan tidsgränsen uppnås. | tidsintervall (standardvärdet är "02:00:00") |
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 aktivitetskörningen. Ange endast ett värde när du vill begränsa samtidiga anslutningar. | < övre gränsen för samtidiga anslutningar > (heltal) |
Nej | maxConcurrent Anslut ions |