Datenzugriff im SQL Server
Datenquelle hinzufügen
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 Sichten 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 ist die Verwendung von Triggern für Tabellen. Wenn eine Tabelle über einen Trigger verfügt, können Sie das direkte Muster Submit()
zum Erstellen, Aktualisieren und Löschen nicht verwenden. Submit()
hat einen Konflikt zwischen der Behandlung von SQL-Triggern und dem integrierten Power Apps-Verhalten, 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.
[!NOTE]
Der SQL Server-Konnektor geht wie alle Konnektoren, die mit relationalen Daten arbeiten, davon aus, dass Tabellen über einen Primärschlüssel verfügen. Ein Primärschlüssel ist entscheidend für die Suche nach bestimmten Datensätzen, die aktualisiert werden sollen. Wenn eine SQL Server-Tabelle keinen Primärschlüssel hat, werden die Daten als schreibgeschützt behandelt. Wenn Sie über Zugriffs- und Bearbeitungsrechte für die SQL Server-Tabelle verfügen, sollten Sie das Hinzufügen eines automatisch generierten Schlüssels in Betracht ziehen.
Eine Ansicht verwenden
Eine Ansicht ist eine gespeicherte Abfrage, die als einzelne Datentabelle angezeigt wird.
Ansichten werden in der Liste der Tabellen angezeigt, die Sie beim Hinzufügen einer Datenquelle auswählen können. Ansichten unterstützen nur Abfragen, keine Updates. 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 können Formeln und Funktionen zum Erstellen, Bearbeiten und Löschen anzeigen. 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:
- Wählen Sie
Start with data
mit einer Basistabelle aus. - Löschen und ersetzen Sie die Tabellendatenquelle.
Beispiel:
Wenn Sie z. B. eine BOOKLENDINGVIEW
-Tabelle haben und diese als Datenquelle für Power Apps hinzufügen, könnte die Formel so einfach lauten wie:
BOOKLENDINGVIEW
Sie können auch andere Formeln zum Erstellen, Aktualisieren und Löschen durch eine Ansichtsdatenquelle und Aufrufe gespeicherter Prozeduren 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.
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:
Es gibt keine Nebeneffekte, wenn Sie diese Prozedur bedarfsweise aufrufen.
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.
In der gespeicherten Prozedur wird eine bescheidene Datenmenge zurückgegeben.
Für Aktionsaufrufe, z. B. gespeicherte Prozeduren, gibt es 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 zu viele Daten zurückgibt (viele Tausend Datensätze), kann die App langsamer werden oder abstürzen. 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, damit sich die Werte nicht von Aufruf zu Aufruf ändern. Wenn eine gespeicherte Prozedur zum Beispiel zwei Tabellen zurückgibt, gibt sie immer zwei Tabellen zurück. Sie können sowohl mit typisierten als auch mit nicht typisierten 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, der dem Namen der gespeicherten Prozedur vorangestellt wird
Der Name des SQL Server-Namespaces, 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 z. B. eine gespeicherte Prozedur hinzufügen, wird möglicherweise mehr als eine Datenquelle in Ihrem Projekt angezeigt.
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 aus einem Textwert in Power Apps lesen. Wenn Sie z. B. eine ganze Zahl in SQL aktualisieren, müssen Sie den Text im Feld mithilfe von Value()
konvertieren.
Hier ist ein Beispiel dafür, wie gespeicherte Prozeduren aussehen könnten, wenn sie einer OnSelect
-Eigenschaft zugewiesen 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. Verweisen Sie auf den Namen der Datenquelle 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, um den Katalog aufzufüllen und zu aktualisieren
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.
Übergeben Sie dann Ihre Eingabevariablen an den Aufruf der gespeicherten Prozedur.
Fügen Sie diesen Power Automate-Flow Ihrer App hinzu, und rufen Sie ihn auf. Die optionalen Argumente werden als Datensatz „{ ... }“ übergeben. Das folgende Beispiel enthält alle optionalen Argumente.