Freigeben über


Datenzugriff im SQL Server

Datenquelle hinzufügen

Direktzugriff:

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

Wenn Sie beispielsweise über eine BOOKLENDING Tabelle verfügen, wird diese Formel angezeigt:

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

Ansichten und gespeicherte Prozeduren:

Ein gängiges professionelles Datenzugriffsmuster besteht darin, Ansichten und anschließend gespeicherte Prozeduren zum Erstellen, Aktualisieren und Löschen zu verwenden, anstatt direkten Zugriff zuzulassen. Wenn Sie Ansichten oder gespeicherte Prozeduren verwenden möchten, ändern Sie die Beispielformel. Ebenso verwendet das Formular für den Datensatz 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() nicht zum Erstellen, Aktualisieren und Löschen verwenden. Submit() in Konflikt mit der SQL-Triggerbehandlung und dem integrierten Power Apps-Verhalten, das denselben Ausgabeparameter verwendet.

Sie können direkt auf die Tabelle für Abfragen zugreifen, aber um eine gespeicherte Prozedur zu behandeln Create, Updateoder Deleteaufzurufen.

Anmerkung

Der SQL Server-Connector, wie alle Connectors, die mit relationalen Daten arbeiten, geht 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, sind die Daten schreibgeschützt. 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 auswählen können, wenn Sie eine Datenquelle hinzufügen. Ansichten unterstützen nur Abfragen, keine Updates. Verwenden Sie zum Aktualisieren von Daten eine gespeicherte Prozedur.

Wenn Sie eine Tabelle mit der 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 von Datensätzen. Wenn Sie jedoch eine Ansicht verwenden, wird nur ein Bildschirm für den Katalog und das Formular angezeigt.

Möglicherweise möchten Sie automatisch generierte Bildschirme Start with data für Ansichten verwenden.

So verwenden Sie 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 über eine BOOKLENDINGVIEW Tabelle verfügen und sie als Datenquelle für Power Apps hinzufügen, kann die Formel so einfach sein wie:

BOOKLENDINGVIEW

Sie können auch andere Erstellungs-, Aktualisierungs- und Löschformeln durch eine Ansichtsdatenquelle und Aufrufe an gespeicherte 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.

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

Nachdem Sie eine gespeicherte Prozedur ausgewählt haben, wird ein untergeordneter Knoten angezeigt, und Sie können die gespeicherte Prozedur als sicher für Kataloge und Tabellen festlegen.

Eine gespeicherte Prozedur ist sicher , wenn sie keine Aktion ausführt, die in bestimmten Szenarien möglicherweise nicht erwünscht ist. Wenn beispielsweise eine gespeicherte Prozedur alle Konten aus einer bestimmten Stadt sammelt und sie dann eine E-Mail sendet, möchten Sie möglicherweise nicht immer, dass E-Mails jedes Mal gesendet werden, wenn die gespeicherte Prozedur aufgerufen wird. Markieren Sie in diesem Fall die gespeicherte Prozedur nicht als sicher.

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

  1. Es gibt keine Nebeneffekte, wenn Sie diese Prozedur bedarfsweise aufrufen.

    Sie können die Prozedur mehrmals aufrufen oder wenn Power Apps das Steuerelement aktualisiert. Wenn Sie sie mit einer Items-Eigenschaft eines Katalogs oder einer Tabelle verwenden, ruft Power Apps die gespeicherte Prozedur auf, wenn das System feststellt, dass eine Aktualisierung erforderlich ist. Sie können nicht festlegen, wann die gespeicherte Prozedur aufgerufen wird.

  2. Die gespeicherte Prozedur gibt eine geringe Datenmenge zurück.

    Aktionsaufrufe, z. B. gespeicherte Prozeduren, haben keine Beschränkung für die Anzahl der abgerufenen Zeilen. Sie werden nicht automatisch in 100 Datensatzschritten wie tabellarischen Datenquellen wie Tabellen oder Ansichten ausgelagert.

    Wenn die gespeicherte Prozedur zu viele Daten zurückgibt (viele Tausend Datensätze), verlangsamt oder abstürzt ihre App. Aus Leistungsgründen bringen Sie weniger als 2.000 Datensätze ein.

Wenn Sie eine gespeicherte Prozedur als sicher überprüfen, können Sie sie als Items-Eigenschaft in Katalogen oder Tabellen 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 beispielsweise eine gespeicherte Prozedur zwei Tabellen zurückgibt, werden immer zwei Tabellen zurückgegeben. Sie können entweder mit bestimmten oder dynamischen Ergebnissen arbeiten.

Die Struktur der Ergebnisse muss auch statisch sein. Wenn z. B. das Schema der Ergebnisse dynamisch ist, sind die Ergebnisse dynamisch, und Sie müssen einen bestimmten Typ für die Verwendung in Power Apps angeben. Weitere Informationen finden Sie unter dynamischen Ergebnissen.

SQL-Namespace, der dem Namen der gespeicherten Prozedur vorangestellt wird

Der NAME des SQL Server-Namespaces, in dem Sie die Prozedur speichern, wird am Anfang des Namens der gespeicherten Prozedur hinzugefügt. 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.

Screenshot, der SQL-Datenquellen zeigt.

Aufrufen einer gespeicherten Prozedur

Um eine gespeicherte Prozedur in Power Apps zu verwenden, fügen Sie den Connectornamen vor dem Namen der gespeicherten Prozedur hinzu, z Paruntimedb.dbonewlibrarybook. B. .

Anmerkung

Wenn Power Apps die gespeicherte Prozedur einführt, kombiniert sie den Namespace- und Prozedurnamen, sodass dbo.newlibrarybook dies wird dbonewlibrarybook.

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

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

Tipp

Konvertieren Sie Bei Bedarf Werte, wenn Sie sie in Ihre gespeicherte Prozedur übergeben, da Sie aus einem Textwert in Power Apps lesen. Wenn Sie beispielsweise eine ganze Zahl in SQL aktualisieren, konvertieren Sie den Text im Feld mithilfe von Value().

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

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

Variablen und alle gespeicherten Prozeduren

Greifen Sie auf eine gespeicherte Prozedur für die Items-Eigenschaft eines Katalogs zu, nachdem Sie sie für die Benutzeroberfläche als sicher deklariert haben. Verweisen Sie auf den Namen der Datenquelle und den Namen der gespeicherten Prozedur, gefolgt von ResultSets. Greifen Sie auf mehrere Ergebnisse zu, indem Sie auf den zurückgegebenen Tabellensatz verweisen, z. B. Tabelle 1, Tabelle 2 usw.

Eine gespeicherte Prozedur aus der Tabelle Paruntimedb mit dem Namen dbo.spo_show_all_library_books() sieht z. B. wie folgt 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 funktioniert nicht mit gespeicherten Prozeduren. Aktualisieren Sie den Katalog, wenn ein Datensatz erstellt, 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 legen Sie die gespeicherte Prozedur auf die Variable fest.

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. Rufen Sie gespeicherte Prozeduren als Teil einer Reihe von Anrufen in einem Geschäftsprozess auf.

Um Power Automate aufzurufen und dann gespeicherte Prozeduren aufzurufen, erstellen Sie Eingabevariablen als Teil Ihres Flusses.

Screenshot, der die Power Automate-Eingabe zeigt.

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

Gespeicherte Prozedur ausführen

Fügen Sie diesen Power Automate-Flow Ihrer App hinzu, und rufen Sie ihn auf. Übergeben Sie optionale Argumente als Datensatz "{ ... }“ übergeben. Das folgende Beispiel enthält alle optionalen Argumente.

Power Automate-Flow