Pripojenie k SQL serveru z Power Apps

K SQL Serveru sa môžete pripojiť buď v Azure, alebo v databáze lokálny.

Poznámka

Novo vytvorené zdroje údajov SQL už nemajú predponu [dbo] ako v predchádzajúcich verziách Power Apps.

Ďalšie informácie nájdete v časti Bežné problémy a riešenia pre Power Apps.

Automatické vygenerovanie aplikácie

V závislosti od Power Apps rozhrania, ktoré používate, použite nový vzhľad alebo klasický vzhľad na vytvorenie aplikácie.

  1. Prihláste sa do služby Power Apps.

  2. Na stránke Domov vyberte buď galériu s jednou stránkou alebo tri obrazovky mobil možnosť:

    • Ak chcete vytvoriť jednostránkovú aplikáciu galérie s responzívnym rozložením, vyberte jednu z možností:
      • Začnite s údajmi > Vyberte externé údaje > Z SQL.
      • Začnite s návrhom stránky > Galéria pripojená k externým údajom > Z SQL.
    • Ak chcete vytvoriť mobilnú aplikáciu s tromi obrazovkami, vyberte Začať so šablónou aplikácie > Z SQL.
  3. Vyberte svoje pripojenie SQL a potom vyberte tabuľku. Ak chcete vybrať iné pripojenie, vyberte rozbaľovaciu ponuku ... na prepnutie pripojenia alebo vytvorenie nového pripojenia SQL.

    Poznámka

    Naraz sa zobrazuje iba jedno spojenie.

  4. Po dokončení vyberte Vytvoriť aplikáciu.

Zavolajte uložené procedúry priamo v Power Fx (verzia Preview)

Teraz môžete priamo volať uložené procedúry SQL Servera z Power Fx. Predvolene by mal byť tento nový prepínač zapnutý. Ak nie, môžete ho zapnúť.

  1. Prejdite na Nastavenia > Aktualizácie > Nové.
  2. Vyhľadajte uložené procedúry.
  3. Nastavte prepínač na Zapnuté pre uložené procedúry SQL Server.
  4. Uložte a znova otvorte aplikáciu.

Snímka obrazovky, ktorá zobrazuje prepínač uložených procedúr servera SQL Server nastavený na možnosť Zapnuté.

Keď do aplikácie pridáte pripojenie k serveru SQL Server, môžete teraz pridávať tabuľky a zobrazenia alebo uložené procedúry. Táto funkcia funguje aj so zabezpečenými implicitnými pripojeniami.

Snímka obrazovky, ktorá zobrazuje zoznamy tabuliek, zobrazení a uložených procedúr, ktoré je možné pridať do vašej aplikácie.

Ak svoju uloženú procedúru okamžite nevidíte, je rýchlejšie ju vyhľadať.

Po výbere uloženej procedúry sa zobrazí podriadený uzol a uloženú procedúru môžete označiť ako Bezpečné na použitie pre galérie a tabuľky. Ak začiarknete túto možnosť, môžete svoju uloženú procedúru priradiť ako vlastnosť Items pre galérie pre tabuľky na použitie vo vašej aplikácii.

Túto možnosť povoľte iba ak:

  1. Neexistujú žiadne vedľajšie účinky vyvolanie tohto postupu na požiadanie, viackrát, kedykoľvek Power Apps obnoví ovládanie. Keď sa použije s vlastnosťou Items galérie alebo tabuľky, Power Apps zavolá uloženú procedúru vždy, keď systém určí, že je potrebné obnovenie. Nemôžete ovládať, kedy sa volá uložená procedúra.
  2. Množstvo údajov, ktoré vrátite v uloženej procedúre, je skromné. Volania akcií, ako sú uložené procedúry, nemajú obmedzenie počtu získaných riadkov. Nie sú automaticky stránkované po 100 prírastkoch záznamov, ako sú tabuľkové zdroje údajov, ako sú tabuľky alebo zobrazenia. Ak teda uložená procedúra vráti príliš veľa údajov (veľa tisíc záznamov), vaša aplikácia sa môže spomaliť alebo zlyhať. Z výkonnostných dôvodov by ste mali priniesť menej ako 2 000 záznamov.

Dôležité

Schéma návratových hodnôt uloženej procedúry by mala byť statická. To znamená, že sa z hovoru na hovor nemení. Ak napríklad zavoláte uloženú procedúru a tá vráti dve tabuľky, potom by mala vždy vrátiť dve tabuľky. Môžete pracovať so zadanými aj nezadanými výsledkami. Štruktúra výsledkov musí byť pri každom hovore rovnaká. Ak je schéma výsledkov dynamická, výsledky budú bez typu a budete musieť zadať typ, aby ste ich mohli použiť Power Apps. Ďalšie informácie nájdete v časti Nezadané výsledky.

Priestor názvov SQL vopred priradený k názvu uloženej procedúry

Názov priestoru názvov servera SQL Server, v ktorom je uložená procedúra uložená, je priradený k názvu uloženej procedúry, ktorá je pre ňu vytvorená Power Apps. Napríklad všetky uložené procedúry v 'DBO' priestore názvov SQL Server majú na začiatku 'dbo' mena.

Príklad

Keď pridáte uloženú procedúru, vo svojom projekte môžete vidieť viac ako jeden zdroj údajov.

Snímka obrazovky, ktorá zobrazuje zdroje údajov SQL.

Volanie uloženej procedúry

Ak chcete použiť uloženú procedúru v Power Apps, najprv pred názvom uloženej procedúry uveďte názov konektora, ktorý je k nej priradený, a názov uloženej procedúry. 'Paruntimedb.dbonewlibrarybook' v príklade ilustruje tento vzor. Keď Power Apps prinesie uloženú procedúru, zreťazí menný priestor a názov procedúry a 'dbo.newlibrarybook' sa zmení na 'dbonewlibrarybook'.

Argumenty sa odovzdávajú ako Power Apps záznam s pomenovanými pármi hodnôt:

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

Nezabudnite konvertovať hodnoty podľa potreby, keď ich odovzdávate do svojej uloženej procedúry, pretože čítate z textovej hodnoty v Power Apps. Napríklad, ak aktualizujete celé číslo v SQL, musíte previesť text v poli pomocou 'Value()'.

Priame volanie uložených procedúr.

Prístup k výsledkom

Uložená procedúra môže vrátiť kód, hodnoty z parametrov Out alebo výsledky dotazov. Ak chcete získať prístup k týmto výsledkom, použite nasledujúce vzory:

Návratový kód

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

Použite to na prístup k výsledkom príkazu return.

Výstupné parametre

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

Nezabudnite použiť názov parametra tak, ako sa zobrazuje v užitočnom obsahu JSON.

Sady výsledkov

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

K ďalším tabuľkám je možné pristupovať prostredníctvom ich názvu (napríklad Tabuľka1, Tabuľka2, Tabuľka3, ... )

Výsledky bez typu

Niektoré komplikované uložené procedúry vracajú výsledok bez typu. Tieto výsledky nie sú dostupné priamo. Najprv musíte zadať typ. K údajom môžete pristupovať pomocou nasledujúceho vzoru.

V tomto príklade najprv vytiahneme výsledky do premennej s názvom "MyUntypedObject". Potom z tejto premennej vytiahneme „Tabuľka1“ a vložíme ju do premennej s názvom „Tabuľka1“. Toto krok nie je nevyhnutne potrebné. Je však užitočné umiestniť všetky výsledky do premennej v určitom čase a potom vytiahnuť časti, ktoré potrebujete. Potom iterujeme cez tabuľku1 a extrahujeme prvky JSON v pomenovaných pároch hodnôt. Uistite sa, že názvy sa zhodujú s názvami, ktoré sa vrátia v užitočnej časti JSON. Ak chcete overiť, otvorte monitor Power Apps a pozrite sa na záznam v časti tela údajového uzla.

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

K uloženej procedúre pre vlastnosť Položky galérie môžete pristupovať po tom, čo ju vyhlásite za bezpečnú pre používateľské rozhranie. Uveďte zdroj údajov názov a názov uloženej procedúry, za ktorým nasleduje 'ResultSets'. K viacerým výsledkom môžete pristupovať odkazom na množinu vrátených tabuliek, ako je tabuľka 1, tabuľka 2 atď.

Napríklad váš prístup k uloženej procedúre mimo zdroj údajov s názvom 'Paruntimedb' s uloženou procedúrou s názvom 'dbo.spo_show_all_library_books()' bude vyzerať nasledovne.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Tým sa vyplní galéria záznamami. Uložené procedúry sú však doplnkom akčného správania k tabuľkovému modelu. Refresh() funguje iba s tabuľkovými zdrojmi údajov a nedá sa použiť s uloženými procedúrami. Potom musíte galériu obnoviť, keď sa záznam vytvorí, aktualizuje alebo odstráni. Keď použijete Submit() vo formulári pre tabuľkový zdroj údajov, efektívne zavolá Refresh() pod krytom a aktualizuje galériu.

Ak chcete obísť toto obmedzenie, použite premennú vo vlastnosti OnVisible pre obrazovku a nastavte uloženú procedúru na premennú.

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

A potom nastavte vlastnosť 'Items' galérie na názov premennej.

SP_Books

Potom po vytvorení, aktualizácii alebo odstránení záznamu pomocou volania uloženej procedúry nastavte premennú znova. Toto aktualizuje galériu.

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

Známe problémy

Zdroje údajov SQL už nepridávajú predponu [dbo] k názvu zdroj údajov

Predpona [dbo] neslúži žiadnemu praktickému účelu v Power Apps , keďže zdroj údajov názvy sú automaticky jednoznačné. Existujúce zdroje údajov nie sú touto zmenou ovplyvnené, ale žiadne novo pridané zdroje údajov SQL neobsahujú predponu.

Ak potrebujete aktualizovať veľké množstvo vzorcov v niektorej zo svojich aplikácií, Power Apps Source File Pack and Unpack Utility možno použiť na globálne vyhľadávanie a nahradenie.

Poznámka

Počnúc verziou 3.21054 budeme po prečítaní zdroj údajov automaticky aktualizovať odkazy na nefunkčné staršie názvy na nový názov zdroj údajov.

Ďalšie kroky

Poznámka

Môžete nás informovať o svojich voľbách jazyka pre dokumentáciu? Absolvujte krátky prieskum. (upozorňujeme, že tento prieskum je v angličtine)

Prieskum bude trvať približne sedem minút. Nezhromažďujú sa žiadne osobné údaje (vyhlásenie o používaní osobných údajov).