Sdílet prostřednictvím


Připojení k SQL Serveru z Power Apps

K SQL Server se můžete připojit buď v Azure, nebo v místní databázi.

Poznámka

Nově vytvořené zdroje dat SQL již nemají předponu [dbo], jako tomu bylo v předchozích verzích Power Apps.

Další informace viz téma Běžné problémy a řešení pro Power Apps.

Automatické vygenerování aplikace

V závislosti na rozhraní Power Apps, které používáte, používejte nový vzhled nebo klasický vzhled pro vytvoření aplikace.

  1. Přihlaste se do Power Apps

  2. Na úvodní stránce vyberte možnost galerie s jednou stránkou nebo mobil se třemi obrazovkami:

    • Chcete-li vytvořit aplikaci galerie s jednou stránkou s responzivním rozložením, vyberte jednu z následujících možností:
      • Začněte s daty > Vyberte externí data > Ze SQL.
      • Začněte s návrhem stránky > Galerie připojená k externím datům > Z SQL.
    • Chcete-li vytvořit mobilní aplikaci se třemi obrazovkami, vyberte Začít se šablonou aplikace > Z SQL.
  3. Vyberte připojení SQL a poté vyberte tabulku. Chcete-li vybrat jiné připojení, vyberte rozbalovací nabídku ... a přepněte připojení nebo vytvořte nové připojení SQL.

    Poznámka

    V jednu chvíli se zobrazuje pouze jedno připojení.

  4. Až budete hotovi, vyberte Vytvořit aplikaci.

Volejte uložené procedury přímo v Power Fx (Preview)

Nyní můžete přímo volat uložené procedury serveru SQL Server z Power Fx. Ve výchozím nastavení by měl být tento nový přepínač zapnutý. Pokud ne, můžete jej zapnout.

  1. Přejděte na Nastavení > Aktualizace > Nové.
  2. Vyhledejte uložené procedury.
  3. Přepínač pro procedury serveru SQL Serveru nastavte na hodnotu Zapnuto.
  4. Uložte a znovu otevřete aplikaci.

Snímek obrazovky, který ukazuje přepínač uložených procedur serveru SQL Server nastavený na hodnotu Zapnuto.

Když do aplikace přidáte připojení k SQL Server, můžete nyní přidávat tabulky a pohledy nebo uložené procedury. Tato funkce funguje také se zabezpečenými implicitními připojeními.

Snímek obrazovky, který ukazuje seznamy tabulek, pohledů a uložených procedur, které lze přidat do vaší aplikace.

Pokud svou uloženou proceduru okamžitě nevidíte, je rychlejší ji vyhledat.

Jakmile vyberete uloženou proceduru, zobrazí se podřízený uzel a uloženou proceduru můžete označit jako Bezpečné pro použití pro galerie a tabulky. Pokud zaškrtnete tuto možnost, můžete svou uloženou proceduru přiřadit jako vlastnost Items pro galerie pro tabulky, které chcete použít ve vaší aplikaci.

Tuto možnost zapněte, pouze pokud:

  1. Neexistují žádné vedlejší účinky volání této procedury na vyžádání, vícekrát, kdykoli Power Apps obnoví ovládací prvek. Při použití s vlastností Items galerie nebo tabulky, Power Apps volá uloženou proceduru, kdykoli systém určí, že je potřeba provést aktualizaci. Nemůžete ovládat, kdy je volána uložená procedura.
  2. Množství dat, které vrátíte v uložené proceduře, je mírné. Volání akcí, jako jsou uložené procedury, nemají omezení počtu načtených řádků. Nejsou automaticky stránkovány po 100 záznamech jako tabulkové zdroje dat, jako jsou tabulky nebo zobrazení. Pokud tedy uložená procedura vrací příliš mnoho dat (mnoho tisíc záznamů), může se vaše aplikace zpomalit nebo selhat. Z výkonnostních důvodů byste měli přinést méně než 2 000 záznamů.

Důležité

Schéma návratových hodnot uložené procedury by mělo být statické. To znamená, že se hovor od hovoru nemění. Pokud například zavoláte uloženou proceduru a ta vrátí dvě tabulky, měla by vždy vrátit dvě tabulky. Můžete pracovat se zadanými i nezadanými výsledky. Struktura výsledků musí být u každého hovoru stejná. Pokud je schéma výsledků dynamické, budou výsledky bez typu a budete muset zadat typ, abyste je mohli použít v Power Apps. Další informace najdete na Nezadané výsledky.

Obor názvů SQL předem připravený k názvu uložené procedury

Název oboru názvů SQL Server, ve kterém je uložená procedura uložen, je předřazen k názvu uložené procedury, která je pro ni vytvořena v Power Apps. Například všechny uložené procedury v 'DBO' oboru názvů SQL Server mají na začátku 'dbo' jména.

Příklad

Když přidáte uloženou proceduru, můžete ve svém projektu vidět více než jeden zdroj dat.

Snímek obrazovky, který ukazuje zdroje dat SQL.

Volání uložené procedury

Chcete-li použít uloženou proceduru v Power Apps, nejprve před název uložené procedury uveďte název konektoru, který je k ní přidružen, a název uložené procedury. „Paruntimedb.dbonewlibrarybook“ v příkladu ilustruje tento vzor. Když Power Apps přinese uloženou proceduru, zřetězí jmenný prostor a název procedury a z 'dbo.newlibrarybook' se stane 'dbonewlibrarybook'.

Argumenty jsou předávány jako Power Apps záznam s pojmenovanými dvojicemi hodnot:

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

Nezapomeňte podle potřeby převádět hodnoty, když je předáváte do uložené procedury, protože čtete z textové hodnoty v Power Apps. Pokud například aktualizujete celé číslo v SQL, musíte převést text v poli funkcí „Value()“.

Přímé volání uložených procedur.

Přístup k výsledkům

Uložená procedura může vracet kód, hodnoty z parametrů Out nebo výsledky dotazů. Chcete-li získat přístup k těmto výsledkům, použijte následující vzory:

Návratový kód

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

Použijte toto pro přístup k výsledkům příkazu return.

Výstupní parametry

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

Nezapomeňte použít název parametru tak, jak se zobrazuje v datové části JSON.

Sady výsledků

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

K dalším tabulkám lze přistupovat prostřednictvím jejich názvu (například Tabulka1, Tabulka2, Tabulka3, ... )

Netypované výsledky

Některé komplikované uložené procedury vracejí netypovaný výsledek. Tyto výsledky nejsou přímo přístupné. Nejprve musíte zadat typ. K datům můžete přistupovat pomocí následujícího vzoru.

V tomto příkladu nejprve vytáhneme výsledky do proměnné s názvem "MyUntypedObject". Poté z této proměnné vytáhneme 'Tabulka1' a vložíme ji do proměnné s názvem 'Tabulka1'. Toto krok není nezbytně nutné. Je však užitečné umístit všechny výsledky do proměnné v určitém okamžiku a poté vytáhnout části, které potřebujete. Poté iterujeme tabulkou1 a extrahujeme prvky JSON v pojmenovaných párech hodnot. Ujistěte se, že názvy odpovídají názvům, které jsou vráceny v datové části JSON. Pro ověření otevřete Power Apps monitor a podívejte se do části těla datového uzlu pro záznam.

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žené proceduře pro vlastnost Items galerie můžete přistupovat poté, co ji prohlásíte za bezpečnou pro uživatelské rozhraní. Uveďte název zdroje dat a název uložené procedury následovaný „ResultSets“. K více výsledkům můžete přistupovat odkazem na sadu vrácených tabulek, například Tabulka 1, Tabulka 2 atd.

Například váš přístup k uložené proceduře mimo zdroj dat s názvem „Paruntimedb“ s uloženou procedurou nazvanou „dbo.spo_show_all_library_books()“ bude vypadat následovně.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Tím se galerie naplní záznamy. Uložené procedury jsou však přidáním dodatečným chování akce do tabulkového modelu. Refresh() funguje pouze s tabulkovými zdroji dat a nelze ji použít s uloženými procedurami. Poté musíte galerii aktualizovat, když je záznam vytvořen, aktualizován nebo odstraněn. Když použijete Submit() ve formuláři pro tabulkový zdroj dat, efektivně zavolá Refresh() pod krytem a aktualizuje galerii.

Chcete-li toto omezení obejít, použijte proměnnou ve vlastnosti OnVisible pro obrazovku a nastavte uloženou proceduru na proměnnou.

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

Následně nastavte vlastnost „Items“ galerie na název proměnné.

SP_Books

Poté, co vytvoříte, aktualizujete nebo odstraníte záznam voláním uložené procedury, nastavte proměnnou znovu. Tím se galerie aktualizuje.

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

Známé problémy

Zdroje dat SQL již nepřidávají předponu [dbo] k názvu zdroje dat

Předpona [dbo] neslouží žádnému praktickému účelu v Power Apps, protože názvy zdrojů dat jsou automaticky zjednoznačněny. Stávající zdroje dat nejsou touto změnou ovlivněny, ale žádné nově přidané zdroje dat SQL předponu neobsahují.

Pokud potřebujete aktualizovat velké množství vzorců v jedné ze svých aplikací, Nástroj pro sbalení a rozbalení zdrojového souboru Power Apps lze použít k provedení globálního hledání a nahrazení.

Poznámka

Počínaje verzí 3.21054 budeme po přečtení zdroje dat automaticky aktualizovat nefunkční odkazy na starší názvy na nový název zdroje dat.

Další kroky

Poznámka

Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)

Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).