Teilen über


Verbindung zu SQL Server über Power Apps

Sie können eine Verbindung zu SQL Server entweder in Azure oder einer lokalen Datenbank herstellen.

Hinweis

Neu erstellte SQL-Datenquellen wird nicht mehr wie in früheren Versionen von Power Apps [dbo] vorangestellt.

Weitere Informationen finden Sie unter Allgemeine Probleme und Lösungen für Power Apps.

Eine App automatisch generieren

Je nachdem, welche Power Apps-Schnittstelle Sie verwenden, verweisen Sie auf das neue Design oder das klassische Design, um eine App zu erstellen.

  1. Melden Sie sich bei Power Apps an.

  2. Wählen Sie auf der Startseite entweder die Option einseitige Galerie oder drei Bildschirme mobil aus:

    • Um eine einseitige Katalog-App mit einem dynamischen Layout zu erstellen, wählen Sie eine der folgenden Optionen:
      • Mit Daten beginnen > Externe Daten auswählen > Von SQL.
      • Mit einem Seitenentwurf beginnen > Galerie mit Verbindung zu externen Daten > Von SQL.
    • Um eine mobile App mit drei Bildschirmen zu erstellen, wählen Sie Mit einer App-Vorlage beginnen > Von SQL aus.
  3. Wählen Sie Ihre SQL-Verbindung und dann eine Tabelle aus. Um eine andere Verbindung auszuwählen, wählen Sie das Überlaufmenü ... aus, um Ihre Verbindung zu wechseln oder eine neue SQL-Verbindung zu erstellen.

    Hinweis

    Es wird jeweils nur eine Verbindung angezeigt.

  4. Wenn Sie fertig sind, wählen Sie App erstellen.

Gespeicherte Prozeduren direkt in Power Fx abrufen (Vorschauversion)

Sie können jetzt gespeicherte SQL Server-Prozeduren direkt aufrufen Power Fx. Standardmäßig sollte dieser neue Schalter aktiviert sein. Wenn nicht, können Sie es einschalten.

  1. Gehen Sie zu Einstellungen > Updates > Neu.
  2. Suchen Sie nach gespeicherten Prozeduren.
  3. Stellen Sie den Schalter auf An für Gespeicherte SQL Server-Prozeduren.
  4. Speichern und öffnen Sie die App erneut.

Screenshot, der zeigt, wie der Schalter für gespeicherte SQL Server-Prozeduren auf „Ein“ gesetzt ist.

Wenn Sie Ihrer App eine SQL Server-Verbindung hinzufügen, können Sie jetzt Tabellen und Ansichten oder gespeicherte Prozeduren hinzufügen. Diese Funktion funktioniert auch mit sicheren impliziten Verbindungen.

Screenshot, der Listen mit Tabellen, Ansichten und gespeicherten Prozeduren zeigt, die Ihrer App hinzugefügt werden können.

Wenn Sie Ihre gespeicherte Prozedur nicht sofort sehen, können Sie schneller danach suchen.

Sobald Sie eine gespeicherte Prozedur auswählen, wird ein untergeordneter Knoten angezeigt und Sie können die gespeicherte Prozedur als Sicher für die Verwendung für Galerien und Tabellen kennzeichnen. Wenn Sie diese Option aktivieren, können Sie Ihre gespeicherte Prozedur als Elemente-Eigenschaft für Galerien für Tabellen zur Verwendung in Ihrer App zuweisen.

Aktivieren Sie diese Option nur, wenn:

  1. Es gibt keine Nebenwirkungen, wenn diese Prozedur bei Bedarf mehrmals aufgerufen wird, sobald Power Apps das Steuerelement aktualisiert. Bei Verwendung mit einer Elemente-Eigenschaft einer Galerie oder Tabelle ruft Power Apps die gespeicherte Prozedur immer dann auf, wenn das System feststellt, dass eine Aktualisierung erforderlich ist. Sie können nicht festlegen, wann die gespeicherte Prozedur aufgerufen wird.
  2. Die Datenmenge, die Sie in der gespeicherten Prozedur zurückgeben, ist geringfügig. Aktionsaufrufe, wie etwa gespeicherte Prozeduren, haben keine Begrenzung für die Anzahl der abgerufenen Zeilen. Sie werden nicht automatisch in Schritten von 100 Datensätzen ausgelagert, wie es bei tabellarischen Datenquellen wie Tabellen oder Ansichten der Fall ist. Wenn die gespeicherte Prozedur also zu viele Daten (viele tausend Datensätze) zurückgibt, wird Ihre App möglicherweise langsamer oder stürzt ab. Aus Leistungsgründen sollten Sie weniger als 2.000 Datensätze einbringen.

Wichtig

Das Schema der Rückgabewerte der gespeicherten Prozedur sollte statisch sein. Das bedeutet, dass es sich von Anruf zu Anruf nicht ändert. Wenn Sie beispielsweise eine gespeicherte Prozedur aufrufen und diese zwei Tabellen zurückgibt, sollte sie immer zwei Tabellen zurückgeben. Sie können entweder mit typisierten oder untypisierten Ergebnissen arbeiten. Die Struktur der Ergebnisse muss von Anruf zu Anruf gleich sein. Wenn das Schema der Ergebnisse dynamisch ist, sind die Ergebnisse untypisiert und Sie müssen einen Typ angeben, um sie in Power Apps verwenden zu können. Weitere Informationen finden Sie unter Untypisierte Ergebnisse.

Dem Namen der gespeicherten Prozedur wird ein SQL-Namespace vorangestellt.

Der Name des SQL Server-Namespace, in dem die gespeicherte Prozedur gespeichert ist, wird dem Namen der gespeicherten Prozedur vorangestellt, die dafür in Power Apps erstellt wird. Beispielsweise haben alle gespeicherten Prozeduren im „DBO“ SQL Server-Namespace das Zeichen „dbo“ am Anfang ihres Namens.

Beispiel

Wenn Sie eine gespeicherte Prozedur hinzufügen, wird in Ihrem Projekt möglicherweise mehr als eine Datenquelle angezeigt.

Screenshot, der SQL-Datenquellen zeigt.

Aufrufen einer gespeicherten Prozedur

Um eine gespeicherte Prozedur in Power Apps zu verwenden, stellen Sie dem Namen der gespeicherten Prozedur zunächst den Namen des zugehörigen Konnektors und den Namen der gespeicherten Prozedur voran. „Paruntimedb.dbonewlibrarybook“ im Beispiel veranschaulicht dieses Muster. Wenn Power Apps die gespeicherte Prozedur einbringt, verkettet es den Namespace und den Prozedurnamen und aus „dbo.newlibrarybook“ wird „dbonewlibrarybook“.

Argumente werden als Power Apps Datensatz mit benannten Wertepaaren übergeben:

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

Denken Sie daran, die Werte bei Bedarf zu konvertieren, wenn Sie sie an Ihre gespeicherte Prozedur übergeben, da Sie in Power Apps einen Textwert lesen. Wenn Sie beispielsweise eine Ganzzahl in SQL aktualisieren, müssen Sie den Text im Feld mit „Value()“ konvertieren.

Gespeicherte Prozeduren direkt aufrufen.

Auf Ergebnisse zugreifen

Eine gespeicherte Prozedur kann einen Code, Werte aus Out-Parametern oder die Ergebnisse von Abfragen zurückgeben. Um auf diese Ergebnisse zuzugreifen, verwenden Sie die folgenden Muster:

Rückgabe Code

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

Verwenden Sie dies, um auf die Ergebnisse einer Return-Anweisung zuzugreifen.

Ausgabe...parameter

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

Achten Sie darauf, den Parameternamen so zu verwenden, wie er in der JSON-Nutzlast angezeigt wird.

Ergebnismengen

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

Auf weitere Tabellen kann über deren Namen zugegriffen werden (z. B. Tabelle1, Tabelle2, Tabelle3, ...).

Untypisierte Ergebnisse

Einige komplizierte gespeicherte Prozeduren geben ein nicht typisiertes Ergebnis zurück. Auf diese Ergebnisse kann nicht direkt zugegriffen werden. Sie müssen zuerst einen Typ angeben. Sie können nach folgendem Muster auf die Daten zugreifen.

In diesem Beispiel ziehen wir die Ergebnisse zuerst in eine Variable namens „MyUntypedObject“. Dann ziehen wir ‚Tabelle1‘ aus dieser Variable und fügen es in eine Variable namens ‚Tabelle1‘ ein. Dieses Schritt ist nicht unbedingt erforderlich. Es ist jedoch sinnvoll, alle Ergebnisse rechtzeitig in einer Variablen bei zeigen abzulegen und dann die benötigten Teile herauszuziehen. Dann durchlaufen wir Tabelle1 und extrahieren die JSON-Elemente in benannten Wertepaaren. Stellen Sie sicher, dass die Namen mit den Namen übereinstimmen, die in der JSON-Nutzlast zurückgegeben werden. Öffnen Sie zur Validierung einen Power Apps Monitor und suchen Sie im Hauptteil des Datenknotens nach einem Datensatz.

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

Sie können auf eine gespeicherte Prozedur für die Eigenschaft Artikel eines Katalogs zugreifen, nachdem Sie sie für die Benutzeroberfläche als sicher erklärt haben. Verweisen Sie auf den Datenquellennamen und den Namen der gespeicherten Prozedur, gefolgt von „ResultSets“. Sie können auf mehrere Ergebnisse zugreifen, indem Sie auf die zurückgegebenen Tabellen wie Tabelle 1, Tabelle 2 usw. verweisen.

Beispielsweise sieht Ihr Zugriff auf eine gespeicherte Prozedur von Datenquelle namens „Paruntimedb“ mit einer gespeicherten Prozedur namens „dbo.spo_show_all_library_books()“ wie folgt aus.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Dadurch wird der Katalog mit Datensätzen gefüllt. Allerdings sind gespeicherte Prozeduren eine Ergänzung von Aktionsverhalten zum tabellarischen Modell. „Refresh()“ funktioniert nur mit tabellarischen Datenquellen und kann nicht mit gespeicherten Prozeduren verwendet werden. Anschließend müssen Sie den Katalog aktualisieren, wenn ein Datensatz erstellt, aktualisiert oder gelöscht wird. Wenn Sie in einem Formular für eine tabellarische Datenquelle-Zeile „Submit()“ verwenden, wird im Hintergrund effektiv „Refresh()“ aufgerufen und die Galerie aktualisiert.

Um diese Einschränkung zu umgehen, verwenden Sie eine Variable in der „OnVisible“-Eigenschaft für den Bildschirm und legen Sie die gespeicherte Prozedur auf die Variable fest.

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

Und legen Sie dann die „Artikel“-Eigenschaft des Katalogs auf den Variablennamen fest.

SP_Books

Nachdem Sie dann einen Datensatz mit einem Aufruf der gespeicherten Prozedur erstellt, aktualisiert oder gelöscht haben, legen Sie die Variable erneut fest. Dadurch wird der Katalog aktualisiert.

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

Bekannte Probleme

SQL-Datenquellen fügen dem Namen der Datenquelle kein [dbo]-Präfix mehr hinzu

Das Präfix [dbo] erfüllt keinen praktischen Zweck in Power Apps, da Datenquellennamen automatisch eindeutig sind. Vorhandene Datenquellen sind von dieser Änderung nicht betroffen, neu hinzugefügte SQL-Datenquellen enthalten jedoch kein Präfix.

Wenn Sie eine große Anzahl von Formeln in einer Ihrer Apps aktualisieren müssen, kann das Power Apps Dienstprogramm zum Packen und Entpacken von Quelldateien verwendet werden, um ein globales Suchen und Ersetzen durchzuführen.

Hinweis

Ab Version 3.21054 aktualisieren wir nach dem Lesen der Datenquelle automatisch defekte veraltete Namensreferenzen auf den neuen Datenquellennamen.

Nächste Schritte,

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).