Share via


Verbinding maken met SQL Server vanuit Power Apps

U kunt verbinding maken met SQL Server in Azure of een on-premises database.

Notitie

Nieuw gemaakte SQL-gegevensbronnen worden niet langer voorafgegaan door het voorvoegsel [dbo] zoals in eerdere versies van Power Apps.

Zie Veelvoorkomende problemen en oplossingen voor Power Apps voor meer informatie.

Automatisch een app genereren

Afhankelijk van welke Power Apps-interface je gebruikt, kun je de nieuwe look of de klassieke look raadplegen om een ​​app te bouwen.

  1. Meld u aan bij Power Apps.

  2. Selecteer op de pagina Start de optie galerie van één pagina of mobiel met drie schermen:

    • Kies een van de volgende opties om een galerie-app met één pagina en een responsieve indeling te maken:
      • Beginnen met gegevens > Externe gegevens selecteren > Vanuit SQL.
      • Beginnen met een pagina-ontwerp > Galerie verbonden met externe gegevens > Vanuit SQL.
    • Als u een mobiele app met drie schermen wilt maken, selecteert u Beginnen met een app-sjabloon > Vanuit SQL.
  3. Selecteer de uw SQL-verbinding en selecteer vervolgens een tabel. Als u een andere verbinding wilt kiezen, selecteert u het overloopmenu ... om uw verbinding te wijzigen of een nieuwe SQL-verbinding te maken.

    Notitie

    Er wordt slechts één verbinding tegelijk weergegeven.

  4. Klik op App maken als u gereed bent.

Opgeslagen procedures direct oproepen in Power Fx (preview)

U kunt nu rechtstreeks opgeslagen procedures in SQL Server aanroepen vanuit Power Fx. Standaard moet deze nieuwe schakelaar aan staan. Zo niet, dan kunt u het inschakelen.

  1. Ga naar instellingen > Updates > Nieuw.
  2. Zoek naar opgeslagen procedures.
  3. Stel de wisselknop in op Aan voor Opgeslagen procedures van SQL Server.
  4. Sla op en open de app opnieuw.

Schermopname waarin wordt weergegeven dat de schakelaar voor opgeslagen SQL Server-procedures is ingesteld op Aan.

Wanneer u een SQL Server-verbinding aan uw app toevoegt, kunt u nu tabellen en weergaven of opgeslagen procedures toevoegen. Deze functie werkt ook met beveiligde impliciete verbindingen.

Schermopname met lijsten met tabellen, weergaven en opgeslagen procedures die aan uw app kunnen worden toegevoegd.

Als u uw opgeslagen procedure niet onmiddellijk ziet, kunt u er sneller naar zoeken.

Zodra u een opgeslagen procedure selecteert, verschijnt er een onderliggend knooppunt en kunt u de opgeslagen procedure aanwijzen als Veilig te gebruiken voor galerieën en tabellen. Als u deze optie aanvinkt, kunt u uw opgeslagen procedure toewijzen als een eigenschap Items voor galerieën die u in uw app kunt gebruiken.

Schakel deze optie alleen in als:

  1. Er geen bijwerkingen zijn verbonden aan het herhaaldelijk aanroepen van deze procedure wanneer Power Apps het besturingselement vernieuwt. Bij gebruik met een eigenschap Items van een galerie of tabel, roept Power Apps de opgeslagen procedure aan wanneer het systeem bepaalt dat vernieuwing nodig is. U hebt geen controle over wanneer de opgeslagen procedure wordt aangeroepen.
  2. De hoeveelheid gegevens die u retourneert in de opgeslagen procedure is bescheiden. Voor actieaanroepen, zoals opgeslagen procedures, geldt geen limiet voor het aantal opgehaalde rijen. Ze worden niet automatisch gepagineerd in stappen van 100 records, zoals gegevensbronnen in tabelvorm, zoals tabellen of weergaven. Dus als de opgeslagen procedure te veel gegevens retourneert (vele duizenden records), kan dit uw app trager maken of laten crashen. Om prestatieredenen raden we u aan om minder dan 2.000 records in te voeren.

Belangrijk

Het schema van de retourwaarden van de opgeslagen procedure moet statisch zijn. Dat wil zeggen dat het niet verandert van gesprek tot gesprek. Als u bijvoorbeeld een opgeslagen procedure aanroept en deze retourneert twee tabellen, dan moet deze altijd twee tabellen retourneren. U kunt met getypte of niet-getypte resultaten werken. De structuur van de resultaten moet bij elk gesprek hetzelfde zijn. Als het schema van de resultaten dynamisch is, zijn de resultaten niet getypeerd en moet u een type opgeven om ze in Power Apps te kunnen gebruiken. Ga voor meer informatie naar Niet-getypte resultaten.

SQL-naamruimte voorafgegaan door opgeslagen procedurenaam

De naam van de SQL Server-naamruimte waarin de opgeslagen procedure is opgeslagen, wordt voorafgegaan door de naam van de opgeslagen procedure die ervoor is gemaakt in Power Apps. Alle opgeslagen procedures in de 'DBO' SQL Server-naamruimte hebben bijvoorbeeld 'dbo' aan het begin van de naam.

Voorbeeld

Wanneer u een opgeslagen procedure toevoegt, ziet u mogelijk meer dan één gegevensbron in uw project.

Schermopname met SQL-gegevensbronnen.

Een opgeslagen procedure aanroepen

Als u een ​​opgeslagen procedure in Power Apps wilt gebruiken, moet u eerst de naam van de opgeslagen procedure vooraf laten gaan door de naam van de bijbehorende connector en de naam van de opgeslagen procedure. 'Paruntimedb.dbonewlibrarybook' in het voorbeeld illustreert dit patroon. Wanneer de opgeslagen procedure wordt opgehaald, worden de naamruimte en de procedurenaam samengevoegd en wordt 'dbo.newlibrarybook' omgezet in 'dbonewlibrarybook'. Power Apps

Argumenten worden doorgegeven als een Power Apps record met benoemde waardeparen:

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})

Vergeet niet om indien nodig waarden te converteren wanneer u ze doorgeeft aan uw opgeslagen procedure, aangezien u een tekstwaarde leest in Power Apps. Als u een geheel getal in SQL bijwerkt, moet u bijvoorbeeld de tekst in het veld omzetten met 'Value()'.

Opgeslagen procedures rechtstreeks aanroepen.

Toegang tot resultaten

Een opgeslagen procedure kan een code, waarden van Out-parameters of de resultaten van query's retourneren. Om toegang te krijgen tot deze resultaten, gebruikt u de volgende patronen:

Retourcode

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >}).ReturnCode

Gebruik dit om toegang te krijgen tot de resultaten van een return-instructie.

Uitvoerparameters

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >}).OutputParameters.<parameterName>

Let op dat u de parameternaam gebruikt zoals deze in de JSON-payload voorkomt.

Resultatensets

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >}).ResultSets.Table1

Extra tabellen zijn toegankelijk via hun naam (bijvoorbeeld Tabel1, Tabel2, Tabel3, ...)

Niet-getypte resultaten

Sommige ingewikkelde opgeslagen procedures retourneren een ongetypeerd resultaat. Deze resultaten zijn niet rechtstreeks toegankelijk. U moet eerst een type opgeven. U kunt de gegevens benaderen met behulp van het volgende patroon.

In dit voorbeeld plaatsen we de resultaten eerst in een variabele met de naam 'MyUntypedObject'. Vervolgens halen we 'Table1' uit die variabele en plaatsen deze in een variabele met de naam 'table1'. Deze stap is niet strikt noodzakelijk. Het is echter wel handig om alle resultaten in een variabele op aanwijzen te zetten en vervolgens de onderdelen eruit te halen die je nodig hebt. Vervolgens itereren we door tabel 1 en extraheren we de JSON-elementen in benoemde waardeparen. Zorg ervoor dat de namen overeenkomen met de namen die worden geretourneerd in de JSON-payload. Om te valideren, opent u een monitor en bekijkt u het body-gedeelte van het dataknooppunt voor een record. Power Apps

Set(
    <MyUntypedObject>,
    <datasourceName>.<StoredprocedureName>( 
      { <paramName1>: "someString" }
    ).ResultSets
);
Set(
    table1,
    <MyUntypedObject>.Table1
);
Set(
    TypedTable,
    ForAll(
        table1,
        {
            BookID: Value(ThisRecord.BookID),
            BookName: Text(ThisRecord.BookName)
        }
    )
);

U kunt toegang krijgen tot een opgeslagen procedure voor de eigenschap Items van een galerij nadat u deze veilig hebt verklaard voor de gebruikersinterface. Verwijs naar de gegevensbronnaam en de naam van de opgeslagen procedure gevolgd door 'ResultSets'. U kunt toegang krijgen tot meerdere resultaten door te verwijzen naar de geretourneerde set tabellen, zoals Tabel 1, Tabel 2, enz.

Uw toegang tot een opgeslagen procedure vanaf een gegevensbron met de naam 'Paruntimedb' met een opgeslagen procedure met de naam 'dbo.spo_show_all_library_books()' ziet er bijvoorbeeld als volgt uit.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Hierdoor wordt de galerij gevuld met records. Opgeslagen procedures zijn echter een toevoeging van actiegedrag aan het tabelmodel. Refresh() werkt alleen met gegevensbronnen in tabelvorm en kan niet worden gebruikt met opgeslagen procedures. Vervolgens moet u de galerij vernieuwen wanneer een record wordt gemaakt, bijgewerkt of verwijderd. Wanneer u Submit() gebruikt op een formulier voor een tabelvormige gegevensbron, wordt Refresh() onder de motorkap aangeroepen en wordt de galerij bijgewerkt.

Gebruik om deze beperking te omzeilen een variabele in de eigenschap OnVisible voor het scherm en stel de opgeslagen procedure in op de variabele.

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

Stel vervolgens de eigenschap 'Items' van de galerij in op de variabelenaam.

SP_Books

Nadat u vervolgens een record hebt gemaakt, bijgewerkt of verwijderd met een aanroep van de opgeslagen procedure, stelt u de variabele opnieuw in. Hiermee wordt de galerij bijgewerkt.

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

Bekende problemen

Met SQL-gegevensbronnen wordt niet langer het voorvoegsel [dbo] toegevoegd aan de naam van de gegevensbron

Het voorvoegsel [dbo] heeft geen enkel praktisch doel in Power Apps, aangezien de namen van gegevensbronnen automatisch ondubbelzinnig worden gemaakt. Bestaande gegevensbronnen worden niet beïnvloed door deze wijziging, maar nieuw toegevoegde SQL-gegevensbronnen bevatten het voorvoegsel niet.

Als u een groot aantal formules in een van uw apps moet bijwerken, kan het hulpprogramma voor het in- en uitpakken van bronbestanden in Power Apps worden gebruikt om een algemene zoek- en vervangopdracht uit te voeren.

Notitie

Vanaf versie 3.21054 zullen we defecte oude naamverwijzingen automatisch bijwerken naar de nieuwe gegevensbronnaam na het lezen van de gegevensbron.

Volgende stappen

Notitie

Laat ons uw taalvoorkeuren voor documentatie weten! Beantwoord een korte enquête. (houd er rekening mee dat deze in het Engels is)

De enquête duurt ongeveer zeven minuten. Er worden geen persoonlijke gegevens verzameld (privacyverklaring).