Freigeben über


Datenzugriff im SQL Server

Direktzugriff:

Wenn Sie beim Erstellen einer App die Option Mit Daten beginnen auswählen, enthält die Items-Eigenschaft Ihres Katalogs eine Power Fx-Formel mit einem Datenquellennamen, der direkt auf Ihre Datenbanktabelle verweist.

Wenn Sie z. B. über eine BOOKLENDING-Tabelle verfügen, wird die folgende Formel angezeigt:

Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)

Ansichten und gespeicherte Prozeduren:

Ein gängiges professionelles Datenzugriffsmuster besteht darin, keinen direkten Zugriff zuzulassen, sondern stattdessen Ansichten und dann gespeicherte Prozeduren zum Erstellen, Aktualisieren und Löschen zu verwenden. Wenn Sie Ansichten oder gespeicherte Prozeduren verwenden möchten, müssen Sie die Beispielformel ändern. Das Formular für den Datensatz verwendet auf ähnliche Art und Weise auch nicht den integrierten direkten Ansatz der SubmitForm()-Formel.

Trigger:

Ein Datenbankmuster besteht darin, Trigger auf Tabellen zu verwenden. Wenn eine Tabelle ein Trigger hat, können Sie das direkte Muster Submit() nicht zum Erstellen, Aktualisieren und Löschen verwenden. Submit() weist einen Konflikt zwischen der Handhabung von SQL-Triggern und dem integrierten Power Apps Verhalten auf, das denselben Ausgabeparameter verwendet.

Sie können jedoch zu Abfragezwecken direkt auf die Tabelle zugreifen. Für Create-, Update- oder Delete-Aufgaben müssen Sie jedoch eine gespeicherte Prozedur aufrufen.

Datenquelle hinzufügen

Verwenden einer Ansicht

Eine Ansicht ist eine gespeicherte Abfrage, die als einzelne Datentabelle angezeigt wird.

Ansichten werden in der Liste der Tabellen angezeigt, die Sie Auswählen können, wenn Sie ein Datenquelle hinzufügen. Ansichten unterstützen nur Abfragen, keine Aktualisierungen. Für Aktualisierungen müssen Sie eine gespeicherte Prozedur verwenden.

Wenn Sie eine Tabelle mit dieser Start with data-Option erstellen, erhalten Sie Bildschirme und Formeln, die Datensätze in einem Katalog und Formular anzeigen. Sie sehen Formeln und Funktionen zum Erstellen, Bearbeiten und Löschen. Wenn Sie jedoch eine Ansicht verwenden, sehen Sie nur einen Anzeigebildschirm für den Katalog und das Formular.

Vielleicht möchten Sie die automatisch generierten Bildschirme von Start with data für Ansichten.

Für diese automatisch generierte Option:

  1. Wählen Sie Start with data mit einer Basistabelle aus.
  2. Löschen und ersetzen Sie die Tabellendatenquelle.

Beispiel:

Wenn Sie beispielsweise eine BOOKLENDINGVIEW Tabelle hätten und diese als Datenquelle für Power Apps hinzufügen würden, könnte die Formel ganz einfach lauten:

BOOKLENDINGVIEW

Sie können auch andere Formeln zum Erstellen, Aktualisieren und Löschen durch eine Ansicht Datenquelle und gespeicherte Prozeduraufrufe ersetzen.

Gespeicherte Prozeduren verwenden

Wenn Sie Ihrer App eine SQL Server-Verbindung hinzufügen, können Sie gespeicherte Prozeduren hinzufügen und diese direkt in Power Fx aufrufen.

Anmerkung

Dieses Feature funktioniert auch mit sicheren impliziten Verbindungen.

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

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.

Eine gespeicherte Prozedur ist sicher, wenn sie keine Aktion ausführt, die in bestimmten Szenarien unerwünscht sein könnte. Wenn zum Beispiel eine gespeicherte Prozedur alle Konten aus einer bestimmten Stadt sammelt und ihnen dann eine E-Mail sendet. Möglicherweise möchten Sie nicht immer, dass bei jedem Aufruf der gespeicherten Prozedur E-Mails gesendet werden. Daher sollte die gespeicherte Prozedur nicht als sicher gekennzeichnet werden.

Kennzeichnen Sie eine gespeicherte Prozedur nur in den folgenden Fällen als sicher:

  1. Das Aufrufen dieser Prozedur bei Bedarf hat keine Nebenwirkungen .

    Sie sollten in der Lage sein, die Prozedur mehrmals oder immer dann aufzurufen, wenn 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. In der gespeicherten Prozedur wird eine bescheidene Datenmenge zurückgegeben.

    Bei Aktionsaufrufen, beispielsweise gespeicherten Prozeduren, gibt es keine Beschränkung hinsichtlich der 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 zu viele Daten (viele Tausend Datensätze) zurückgibt, kann es sein, dass Ihre App langsamer wird oder abstürzt. Aus Leistungsgründen sollten Sie weniger als 2.000 Datensätze miteinbeziehen.

Wenn Sie eine gespeicherte Prozedur als sicher kennzeichnen, können Sie sie als Items-Eigenschaft in Katalogen für Tabellen zur Verwendung in Ihrer App zuweisen.

Wichtig

Das Schema der Rückgabewerte der gespeicherten Prozedur sollte statisch sein, sodass sich die Werte von Aufruf zu Aufruf nicht ändern. Wenn eine gespeicherte Prozedur zum Beispiel zwei Tabellen zurückgibt, gibt sie immer zwei Tabellen zurück. Sie können entweder mit typisierten oder untypisierten Ergebnissen arbeiten.

Auch die Struktur der Ergebnisse muss statisch sein. Wenn das Schema der Ergebnisse z. B. dynamisch ist, sind die Ergebnisse nicht typisiert, und Sie müssen einen Typ angeben, um sie in Power Apps verwenden zu können. Weitere Informationen finden Sie unter Nicht typisierte Ergebnisse.

SQL-Namespace wird dem Namen der gespeicherten Prozedur vorangestellt

Der Name des Server-Namespace SQL, in dem Sie die Prozedur speichern, wird dem Namen der gespeicherten Prozedur vorangestellt. Alle gespeicherten Prozeduren im SQL Server-Namespace DBO haben zum Beispiel dbo am Anfang des Namens.

Wenn Sie beispielsweise eine gespeicherte Prozedur hinzufügen, sehen Sie in Ihrem Projekt möglicherweise mehr als ein Datenquelle.

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 den Namen des zugeordneten Konnektors voran, z. B Paruntimedb.dbonewlibrarybook.

Anmerkung

Wenn Power Apps die gespeicherte Prozedur mit sich bringt, werden der Namespace und der Prozedurname verkettet, sodass aus dbo.newlibrarybook dbonewlibrarybook wird.

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

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

Trinkgeld

Denken Sie daran, 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.

Hier ist ein Beispiel, wie gespeicherte Prozeduren aussehen könnten, wenn sie einer OnSelect Eigenschaft zugewiesen werden.

Screenshot, der zeigt, wie gespeicherte Prozeduren direkt mithilfe von Schlüssel-/Wertpaaren und Punktnotation aufgerufen werden.

Variablen und alle gespeicherten Prozeduren

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. Referenzieren Sie Datenquellenname 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.

Eine gespeicherte Prozedur, auf die über die Tabelle Paruntimedb mit dem folgenden Namen dbo.spo_show_all_library_books() zugegriffen wird, sieht z. B. folgendermaßen aus:

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Diese Abfrage füllt den Katalog mit Datensätzen. Gespeicherte Prozeduren sind jedoch Aktionen im tabellarischen Modell. Refresh() funktioniert nur mit tabellarischen Datenquellen und kann nicht mit gespeicherten Prozeduren verwendet werden. Sie müssen den Katalog aktualisieren, wenn ein Datensatz angelegt, aktualisiert oder gelöscht wird.

Anmerkung

Wenn Sie Submit() in einem Formular für eine tabellarische Datenquelle verwenden, wird Refresh() im Hintergrund aufgerufen und der Katalog erfolgreich aktualisiert.

Verwenden Sie eine Variable in der OnVisible-Eigenschaft für den Bildschirm und weisen Sie der Variablen die gespeicherte Prozedur zu.

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

Sie können die Items-Eigenschaft des Katalogs auf den Variablennamen festlegen.

SP_Books

Nachdem Sie einen Datensatz mit einem Aufruf der gespeicherten Prozedur erstellt, aktualisiert oder gelöscht haben, legen Sie die Variable erneut fest, um den Katalog zu aktualisieren.

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

Verwenden Sie Power Automate zum Aufrufen gespeicherter Prozeduren

Power Automate verarbeitet asynchrone Aktionen am besten. Sie können gespeicherte Prozeduren als Teil einer Reihe von Aufrufen in einem Geschäftsprozess aufrufen.

Um Power Automate gefolgt von einer gespeicherte Prozeduren aufzurufen, erstellen Sie im Rahmen Ihres Flows Eingabevariablen.

Screenshot, der die Power Automate-Eingabe zeigt.

Übergeben Sie dann Ihre Eingabevariablen an den Aufruf Ihrer gespeicherten Prozedur.

Gespeicherte Prozedur ausführen

Fügen Sie diesen Power Automate Flow zu Ihrer App hinzu und rufen Sie ihn auf. Die optionalen Argumente werden als Datensatz „{ …“ übergeben. }“ übergeben. Das folgende Beispiel hat alle optionalen Argumente.

Power Automate-Flow