10/10/2012
I en verden, hvor datamængder konstant vokser, er effektiv administration afgørende. For IT-administratorer, der arbejder med Microsofts økosystem, er det en daglig udfordring at håndtere store mængder brugere, grupper, enheder og data. Her kommer masseoperationer (bulk operations) ind i billedet som en kraftfuld løsning. Disse operationer giver dig mulighed for at udføre handlinger som oprettelse, opdatering eller sletning på mange poster samtidigt, hvilket sparer tid og minimerer risikoen for manuelle fejl. Denne artikel dykker ned i, hvad masseoperationer er i Microsoft Entra ID og Dataverse, hvordan de fungerer, og hvordan du kan udnytte dem til at forbedre din effektivitet.

Masseadministration i Microsoft Entra ID
Microsoft Entra ID (tidligere Azure Active Directory) er kernen i identitets- og adgangsstyring i Microsoft 365. Når en organisation har tusindvis af medarbejdere, bliver det hurtigt uholdbart at administrere hver bruger enkeltvist. Masseoperationer i Entra admin-portalen er designet til at løse dette problem, men de har deres begrænsninger.
Udfordringer med Admin-portalen
Selvom Entra admin-portalen tilbyder funktioner til masseimport og -oprettelse, kan disse operationer ofte fejle eller time ud i store organisationer (tenants). Dette er et kendt problem, der skyldes skaleringsbegrænsninger. Hvis en operation tager mere end en time, vil den sandsynligvis mislykkes. En typisk løsning er at opdele dine data i mindre bidder, hvilket kan være en omstændelig manuel proces.
Løsningen: PowerShell og Microsoft Graph API
En mere robust og pålidelig metode til at udføre masseoperationer i Entra ID er at bruge PowerShell sammen med Microsoft Graph API. Dette giver dig direkte adgang til at scripte og automatisere komplekse opgaver uden at være begrænset af portalens brugerflade.
Med PowerShell-cmdlets som Get-MgUser -All og Get-MgGroup -All kan du nemt hente komplette lister over brugere og grupper, selv i meget store tenants. Nedenfor er nogle eksempler på almindelige opgaver:
- Download alle brugere: Du kan hente en komplet liste over brugere med specifikke egenskaber (som ID, DisplayName, UserPrincipalName) og eksportere dem til en CSV-fil til videre behandling eller rapportering.
- Opret brugere i massevis: Ved at forberede en CSV-fil med brugeroplysninger kan du køre et PowerShell-script, der læser filen og opretter hver bruger i Entra ID med de nødvendige attributter, herunder et midlertidigt kodeord.
- Slet brugere i massevis: Tilsvarende kan du bruge en liste af UserPrincipalName-værdier i en CSV-fil til at slette flere brugere på én gang.
- Administrer gruppemedlemskaber: Du kan eksportere medlemmer fra en bestemt gruppe, tilføje en liste af nye medlemmer fra en fil eller fjerne flere medlemmer samtidigt.
At bruge PowerShell giver ikke kun en løsning på timeout-problemet, men åbner også op for avanceret automatisering og tilpasning af administrative arbejdsgange.
Bulk Operations vs. BulkSaveChanges i Entity Framework
Når vi bevæger os over i udviklerverdenen, specifikt inden for .NET og Entity Framework, støder vi også på begrebet masseoperationer. Her er det vigtigt at skelne mellem standardmetoder og specialiserede biblioteker som Entity Framework Extensions.

Standardmetoden i Entity Framework, SaveChanges(), er fantastisk til mange scenarier, men den er ikke optimeret til store datamængder. Den bruger en funktion kaldet ChangeTracker til at registrere ændringer for hver enkelt post, før de sendes til databasen. Denne proces bliver meget langsom, når du arbejder med hundreder eller tusinder af poster.
Entity Framework Extensions tilbyder derimod metoder som BulkInsert(), BulkUpdate(), BulkDelete() og BulkMerge(). Disse metoder omgår ChangeTracker og kommunikerer mere direkte med databasen, hvilket resulterer i en dramatisk forbedring af ydeevne.
Sammenligning af ydeevne
Tabellen nedenfor illustrerer den markante forskel i hastighed mellem standard SaveChanges og Bulk Operations fra Entity Framework Extensions.
| Operation | 1.000 Poster | 5.000 Poster |
|---|---|---|
| SaveChanges | 1.000 ms | 5.000 ms |
| BulkInsert | 6 ms | 15 ms |
| BulkUpdate | 50 ms | 65 ms |
| BulkDelete | 45 ms | 60 ms |
Som det ses, er Bulk Operations hundredvis af gange hurtigere, hvilket gør dem uundværlige i applikationer, der skal håndtere store datamigrationer, import eller synkroniseringer.
Massebeskeder i Microsoft Dataverse
Microsoft Dataverse, dataplatformen bag Power Platform og Dynamics 365, tilbyder også dedikerede masseoperationer for at opnå den bedst mulige ydeevne. Disse operationer udføres via specifikke API-beskeder:
CreateMultiple: Opretter flere poster af samme type i et enkelt kald.UpdateMultiple: Opdaterer flere poster af samme type i et enkelt kald.UpsertMultiple: En kombination, der opretter eller opdaterer poster baseret på, om de allerede eksisterer.DeleteMultiple: Sletter flere poster. Bemærk, at denne kun er tilgængelig for elastiske tabeller (elastic tables).
Standard vs. Elastiske Tabeller
Hvordan du bruger disse masseoperationer afhænger af, om du arbejder med standard- eller elastiske tabeller i Dataverse. Forskellen er fundamental for at opnå optimal ydeevne og korrekt fejlhåndtering.

| Egenskab | Standardtabeller (Azure SQL) | Elastiske Tabeller (Azure Cosmos DB) |
|---|---|---|
| Transaktioner | Alle operationer i et kald er en del af en samlet transaktion. | Understøtter ikke transaktioner. Hver operation er uafhængig. |
| Fejlhåndtering | Hvis én operation fejler, rulles hele kaldet tilbage. Alt-eller-intet. | Hvis én operation fejler, fortsætter de andre. Delvis succes er mulig. Fejl kan inspiceres for hver enkelt post. |
| Anbefalet batchstørrelse | Så mange som muligt, typisk 100-1000, for at maksimere transaktionens effektivitet. | Mindre batches, f.eks. 100 poster pr. kald, men sendt parallelt for maksimal gennemstrømning. |
Denne forskel skyldes de underliggende databaseteknologier. Standardtabeller bruger Azure SQL, som er optimeret til transaktionel integritet, mens elastiske tabeller bruger Azure Cosmos DB, som er designet til massiv skalerbarhed og høj gennemstrømning med lav latenstid, men uden transaktionsgarantier på tværs af flere dokumenter.
Ofte Stillede Spørgsmål (FAQ)
Hvordan påvirker API-grænser masseoperationer?
Masseoperationer er stadig underlagt de samme service protection- og API-grænser som enkeltoperationer. Hver masseoperation tæller som ét enkelt API-kald, hvilket reducerer risikoen for at ramme grænsen for antal anmodninger. Dog tager disse kald længere tid, så man skal være opmærksom på grænsen for samlet eksekveringstid. Hver post i en masseoperation tæller individuelt mod Power Platform Request-grænserne (dataændringer).
Hvad sker der, når en massebesked bruges i Dataverse?
Når du bruger f.eks. CreateMultiple, udløses den tilsvarende enkeltbesked (Create) for hver post i kaldet. Det betyder, at eksisterende plugins og workflows, der er registreret på Create-hændelsen, vil køre som normalt. Dette sikrer, at forretningslogik ikke skal vedligeholdes to steder. For optimal ydeevne anbefales det dog at flytte logik til plugins, der er registreret direkte på massebeskeder som CreateMultiple.
Hvad er de primære begrænsninger, jeg skal være opmærksom på?
De største begrænsninger er beskedstørrelse og tidsgrænser. Hvis den samlede datamængde (payload) i et kald overstiger 116.85 MB, kan du opleve fejl, især hvis der er plugins registreret. Ligeledes kan lange operationer time ud (standard er 2-4 minutter afhængig af klienten). Løsningen er typisk at reducere antallet af poster i hvert kald.
Hvis du vil læse andre artikler, der ligner Masseoperationer i Microsoft Entra & Dataverse, kan du besøge kategorien Teknologi.
