Sdílet prostřednictvím


Přístup k datům na SQL Serveru

Přidat zdroj dat

Přímý přístup:

Pokud při vytváření aplikace zvolíte možnost Začít s daty, vlastnost Items vaší galerie obsahuje vzorec Power Fx s názvem zdroje dat, který odkazuje přímo na vaši databázovou tabulku.

Pokud máte například tabulku BOOKLENDING, zobrazí se následující vzorec:

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

Zobrazení a uložené procedury:

Běžným profesionálním vzorem přístupu k datům je použití zobrazení a následných uložených procedur pro vytvoření, aktualizaci a odstranění, nikoli povolení přímého přístupu. Pokud chcete použít zobrazení nebo uložené procedury, musíte změnit vzorec. Podobně ani formulář pro záznam nepoužívá vestavěný přímý přístup vzorce SubmitForm().

Triggery:

Jedním z databázových vzorů je použití triggerů u tabulek. Pokud má tabulka trigger, nemůžete použít přímý vzor Submit() pro vytvoření, aktualizaci a odstranění. Submit() má konflikt mezi zpracováním triggerů SQL a předdefinovaným chováním Power Apps, které používá stejný výstupní parametr.

Můžete však přímo přistupovat k tabulce pro účely dotazu, ale pro zpracování Create, Update, nebo Delete je nutné volat uloženou proceduru.

[!POZNÁMKA]

Konektor SQL Server, stejně jako všechny konektory, které pracují s relačními daty, předpokládá, že tabulky mají primární klíč. Primární klíč je zásadní pro vyhledání konkrétních záznamů, které se mají aktualizovat. Pokud SQL Server tabulka nemá primární klíč, budou data považována za jen pro čtení. Pokud máte přístupová práva k tabulce SQL Server a práva k jejím úpravám, zvažte přidání automaticky generovaného klíče.

Použití zobrazení

Zobrazení je uložený dotaz, který se zobrazuje jako jedna tabulka dat.

Zobrazení se zobrazí v seznamu tabulek, které můžete vybrat při přidání zdroje dat. Zobrazení podporují pouze dotazy, nikoli aktualizace. Pro aktualizace je nutné použít uloženou proceduru.

Pokud vytvoříte tabulku s možností Start with data, získáte obrazovky a vzorce, které zobrazují záznamy v galerii a formuláři. Můžete zobrazit vzorce a funkce pro vytváření, úpravy a mazání. Pokud však použijete zobrazení, zobrazí se pouze obrazovka zobrazení pro galerii a formulář.

Možná budete chtít automaticky vygenerované obrazovky z Start with data pro zobrazení.

Pro tuto automaticky vygenerovanou možnost:

  1. Zvolte Start with data se základní tabulkou.
  2. Odstraňte a nahraďte zdroj dat tabulky.

Příklad:

Pokud byste například měli tabulku BOOKLENDINGVIEW a přidali ji jako zdroj dat pro Power Apps, vzorec by mohl být jednoduchý takto:

BOOKLENDINGVIEW

Můžete také nahradit jiné vzorce pro vytvoření, aktualizaci a odstranění zdrojem dat zobrazení a voláními uložených procedur.

Použití uložených procedur

Když do aplikace přidáte připojení SQL Serveru, můžete přidat uložené procedury a volat je přímo v Power Fx.

Poznámka:

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.

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.

Uložená procedura je bezpečná, pokud nemá žádnou akci, kterou provádí a která by mohla být v určitých scénářích nežádoucí. Pokud například uložená procedura shromáždila všechny účty z daného města a pak jim poslala e-mail. Možná nebudete vždy chtít, aby se e-maily odesílaly pokaždé, když se volá uložená procedura. Uložená procedura by proto neměla být označená jako bezpečná.

Zkontrolujte uloženou proceduru jako bezpečnou pouze v případě, že:

  1. Volání tohoto postupu na požádání nemá žádné vedlejší účinky.

    Měli byste být schopni volat proceduru vícekrát nebo vždy, když Power Apps aktualizuje 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. V uložené proceduře vrátíte mírné množství dat.

    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 uložená procedura vrátí příliš mnoho dat (mnoho tisíc záznamů), může se vaše aplikace zpomalit nebo chybovat. Z důvodů výkonu přineste méně než 2 000 záznamů.

Pokud označíte uloženou proceduru jako bezpečnou, můžete uloženou proceduru přiřadit jako vlastnost Items v galeriích pro tabulky, které se mají použít ve vaší aplikaci.

Důležité

Schéma návratových hodnot uložené procedury by mělo být statické, aby se hodnoty nezměnily z volání na volání. Pokud například uložená procedura vrátí dvě tabulky, pak vždy vrátí dvě tabulky. Můžete pracovat s typovými nebo netypovými výsledky.

Struktura výsledků musí být také statická. Pokud je například schéma výsledků dynamické, pak jsou výsledky netypované a je nutné zadat typ, abyste je v Power Apps mohli použít. Další informace naleznete v tématu Netypované výsledky.

SQL obor názvů s předponou názvu uložené procedury

Název oboru názvů SQL Server, do kterého proceduru uložíte, je připojen k názvu uložené procedury. Například všechny uložené procedury v oboru názvů 'DBO' SQL Server mají 'dbo' na začátku názvu.

Když například přidáte uloženou proceduru, může se v projektu zobrazit více než jeden zdroj dat.

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

Volání uložené procedury

Pokud chcete použít uloženou proceduru v Power Apps, zadejte před název uložené procedury název konektoru, který je k ní přidružený, následovaný názvem uložené procedury, například Paruntimedb.dbonewlibrarybook.

Poznámka:

Když Power Apps přenese uloženou proceduru, zřetězí obor názvů a název procedury tak, aby dbo.newlibrarybook se stal dbonewlibrarybook.

Argumenty Power Apps se předávají jako záznam s pojmenovanými páry hodnot:

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

Tip

Nezapomeňte v případě potřeby převést 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 text v poli převést pomocí Value().

Tady je příklad toho, jak by uložené procedury mohly vypadat při jejich přiřazování k vlastnosti OnSelect.

Screenshot, který ukazuje, jak volat uložené procedury přímo pomocí párů klíč/hodnota a tečkového zápisu.

Proměnné a všechny uložené procedury

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í. Odkazujte na název zdroje dat a název uložené procedury, za kterou následuje 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 uložená procedura, ke které se přistupuje z tabulky Paruntimedb s názvem dbo.spo_show_all_library_books(), vypadá takto:

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Tento dotaz naplní galerii záznamy. Uložené procedury jsou však akce v tabelárním modelu. Refresh() Funguje pouze s tabulkovými zdroji dat a nedá se použít s uloženými procedurami. Při vytvoření, aktualizaci nebo odstranění záznamu je nutné galerii obnovit.

Poznámka:

Použijete-li Submit() ve formuláři pro tabulkový zdroj dat, efektivně volá Refresh() pod pokličkou a aktualizuje galerii.

Použijte proměnnou ve vlastnosti OnVisible obrazovky a nastavte uloženou proceduru na proměnnou.

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

Pak můžete nastavit vlastnost Items galerie na název proměnné.

SP_Books

Po vytvoření, aktualizaci nebo odstranění záznamu pomocí volání uložené procedury nastavte proměnnou znovu tak, aby aktualizovala galerii.

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

Použití Power Automate k volání uložených procedur

Power Automate nejlépe zvládá asynchronní akce. Uložené procedury můžete volat jako součást řady volání v obchodním procesu.

Pokud chcete volat Power Automate následované voláním uložených procedur, vytvořte vstupní proměnné jako součást toku.

Screenshot, který zobrazuje vstup Power Automate.

Pak předejte vstupní proměnné do volání uložené procedury.

Spustit uloženou proceduru

Přidejte tento tok Power Automate do své aplikace a zavolejte ho. Volitelné argumenty se předávají jako záznam "{ ... }”. Následující příklad obsahuje všechny volitelné argumenty.

Tok Power Automate