Share via


Koble til SQL Server fra Power Apps

Du kan koble til SQL Server i Azure eller en lokal database.

Obs!

Nylig opprettede SQL-datakilder har ikke lenger prefikset [dbo], slik de hadde i tidligere versjoner av Power Apps.

Hvis du vil ha mer informasjon, kan du se Vanlige problemer og løsninger for Power Apps.

Å generere en app automatisk

Avhengig av hvilket Power Apps-grensesnitt du bruker, kan se du nytt utsteende eller klassiske utseende for å bygge en app.

  1. Logg på Power Apps.

  2. startsiden velger du enten galleriet på én side eller alternativet for tre skjermer for mobil:

    • Hvis du vil opprette en galleriapp med én side og et responsivt oppsett, velger du ett av følgende:
      • Start med data > Velg eksterne data > Fra SQL.
      • Start med en sideutforming > Galleri koblet til eksterne data > Fra SQL.
    • Hvis du vil opprette en mobilapp med tre skjermer, velger du Start med en appmal > Fra SQL.
  3. Velg SQL-tilkoblingen, og velg deretter en tabell. Hvis du vil velge en annen tilkobling, velger du ...-overflytmenyen for å bytte tilkobling eller opprette en ny SQL-tilkobling.

    Obs!

    Bare én tilkobling vises om gangen.

  4. Når du er ferdig, velger du Opprett app.

Kall opp lagrede prosedyrer direkte i Power Fx (forhåndsversjon)

Du kan kalle opp lagrede SQL Server-prosedyrer direkte fra Power Fx ved å slå på forhåndsversjonsbryteren for lagret SQL Server-prosedyre.

Obs!

Utdataparametere støttes ikke.

  1. Gå til Innstillinger > Kommende funksjoner > Forhåndsversjon.
  2. Søk etter lagrede prosedyrer.
  3. Sett veksleknappen til for Lagrede SQL Server-prosedyrer.
  4. Lagre appen og åpne den på nytt.

Skjermbilde som viser veksleknappen for lagrede SQL Server-prosedyrer som er satt til På.

Når du legger til en SQL Server-tilkobling i appen, kan du nå legge til tabeller og visninger eller lagrede prosedyrer. Denne funksjonen fungerer også med sikre implisitte tilkoblinger.

Skjermbilde som viser lister over tabeller, visninger og lagrede prosedyrer som er tilgjengelige for å bli lagt til i appen.

Hvis du ikke umiddelbart ser den lagrede prosedyren, er det raskere å søke etter den.

Når du har valgt en lagret prosedyre, vises en underordnet node, og du kan angi den lagrede prosedyren som Sikker å bruke for gallerier og tabeller. Hvis du merker av for dette alternativet, kan du tildele den lagrede prosedyren som en Element-egenskap for gallerier for tabeller som skal brukes i appen.

Aktiver dette alternativet bare hvis følgende er tilfelle:

  1. Det finnes ingen bivirkninger av å kalle opp denne prosedyren ved behov, flere ganger, når Power Apps oppdaterer kontrollen. Når den brukes med en Elementer-egenskap for et galleri eller en tabell, kaller Power Apps opp den lagrede prosedyren når systemet avgjør at en oppdatering er nødvendig. Du kan ikke styre når den lagrede prosedyren kalles.
  2. Datamengden du returnerer i den lagrede prosedyren, er beskjeden. Handlingsoppkall, for eksempel lagrede prosedyrer, har ingen grense for antall rader som hentes. De justeres ikke automatisk i trinn på 100 oppføringer slik som tabulære datakilder, for eksempel tabeller eller visninger. Så hvis den lagrede prosedyren returnerer for mye data (flere tusen oppføringer), kan det hende at appen blir tregere eller krasjer. Du bør ikke hente inn flere enn 2 000 oppføringer av hensyn til ytelsen.

Viktig

Skjemaet for returverdiene i den lagrede prosedyren må være statisk. Dette betyr at den ikke endres fra oppkall til oppkall. Hvis du for eksempel kaller opp en lagret prosedyre og den returnerer to tabeller, skal den alltid returnere to tabeller. Hvis skjemaet for resultatene er dynamisk, bør du ikke bruke det med Power Apps. Hvis du for eksempel kaller opp den lagrede prosedyren, og den av og til returnerer én tabell og andre ganger to tabeller, fungerer den ikke riktig i Power Apps. Power Apps krever et statisk skjema for dette oppkallet.

Eksempel

Når du legger til en lagret prosedyre, kan det være mer enn én datakilde i prosjektet.

Skjermbilde som viser SQL-datakilder.

Hvis du vil bruke en lagret prosedyre i Power Apps, må du først bruke navnet på koblingen som er knyttet til den lagrede prosedyren, som prefiks for navnet på den lagrede prosedyren. «Paruntimedb.dbonewlibrarybook» i eksemplet illustrerer dette mønsteret. Merk også at når Power Apps henter inn den lagrede prosedyren, setter den sammen hele navnet. Så «dbo.newlibrarybook» blir dermed «dbonewlibrarybook».

Husk å konvertere verdier riktig etter hvert som du sender dem inn i den lagrede prosedyren etter behov, siden du leser fra en tekstverdi i Power Apps. Hvis du for eksempel oppdaterer et heltall i SQL, må du konvertere teksten i feltet ved hjelp av «Value()».

Kaller opp lagrede prosedyrer direkte.

Du kan få tilgang til en lagret prosedyre for egenskapen Items for et galleri etter at du har erklært den som sikker for brukergrensesnittet. Henvis til datakildenavnet og navnet på den lagrede prosedyren etterfulgt av «ResultSets». Du kan få tilgang til flere resultater ved å henvise til settet med tabeller som returneres, for eksempel tabell 1, tabell 2 og så videre.

Tilgang til en lagret prosedyre fra en datakilde kalt «Paruntimedb» med en lagret prosedyre kalt «dbo.spo_show_all_library_books()», ser for eksempel ut som vist nedenfor.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Dette fyller galleriet med oppføringer. Lagrede prosedyrer er imidlertid en tilføying av handlinger i tabellmodellen. Refresh() fungerer bare med datakilder i tabellform og kan ikke brukes med lagrede prosedyrer. Du må deretter oppdatere galleriet når en oppføring opprettes, oppdateres eller slettes. Når du bruker en Submit() i et skjema for en datakilde i tabellform, kaller den opp Refresh() under overflaten og oppdaterer galleriet.

Du kan omgå denne begrensningen ved å bruke en variabel i egenskapen OnVisible for skjermen, og sette den lagrede prosedyren til variabelen.

Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Sett deretter egenskapen Items for galleriet til variabelnavnet.

SP_Books

Etter at du har opprettet, oppdatert eller slettet en oppføring med et oppkall til den lagrede prosedyren, angir du variabelen på nytt. Dermed oppdateres galleriet.

Paruntimedb.dbonewlibrarybook({   
  book_name: DataCardValue3_2.Text, 
  author: DataCardValue1_2.Text,
    ...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Kjente problemer

SQL-datakilder legger ikke lenger til et [dbo]-prefiks i datakildenavnet

[dbo]-prefikset tjener ingen praktisk hensikt i Power Apps fordi datakildenavn automatisk gjøres entydige. Eksisterende datakilder påvirkes ikke av denne endringen, men eventuelle SQL-datakilder som nylig er lagt til, inkluderer ikke prefikset.

Hvis du må oppdatere et stort antall formler i en av appene, kan pakkeverktøyet for kildefiler i Power Apps brukes til en global søk-og-erstatt-operasjon.

Obs!

Fra og med versjon 3.21054 oppdaterer vi brutte, eldre navnereferanser automatisk til det nye datakildenavnet etter at datakilden er lest.

Neste trinn

Obs!

Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)

Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).