Споделяне чрез


Свържете се със SQL Server от Power Apps

Можете да се свържете с SQL Server в Azure или локална база данни.

Бележка

Новосъздадените SQL източници на данни вече нямат префикс както [dbo] в предишните версии на Power Apps.

За повече информация вижте Често срещани проблеми и решения за Power Apps.

Автоматично генериране на приложение

В зависимост от интерфейса Power Apps , който използвате, направете справка с новия облик или класическия облик , за да създадете приложение.

  1. Влезте в Power Apps.

  2. От началната страница изберете опцията за галерия с една страница или мобилно устройство с три екрана:

    • За да създадете приложение за галерия с една страница с адаптивно оформление, изберете едно от следните неща:
      • Започнете с данни > Изберете външни данни > от SQL.
      • Започнете с галерия за дизайн > на страници, свързана с външни данни > от SQL.
    • За да създадете мобилно приложение с три екрана, изберете Започнете с шаблон > на приложение от SQL.
  3. Изберете вашата SQL връзка и след това изберете таблица. За да изберете друга връзка, изберете ... за превключване на връзката или създаване на нова SQL връзка.

    Бележка

    В даден момент се показва само една връзка.

  4. Когато сте готови, изберете Създаване на приложение.

Извикване на съхранени процедури директно Power Fx в (преглед)

Вече можете директно да извикате съхранени процедури на SQL Server от Power Fx. По подразбиране този нов превключвател трябва да е включен. Ако не, можете да го включите.

  1. Отидете на Настройки > Актуализации > Ново.
  2. Търсене на съхранени процедури.
  3. Задайте превключвателя на Включено за съхранени процедури на SQL Server.
  4. Запазете и отворете отново приложението.

Екранна снимка, която показва превключвателя на съхранените процедури на SQL Server, зададен на Вкл.

Когато добавите SQL Server връзка към вашето приложение, вече можете да добавяте таблици и изгледи или съхранени процедури. Тази функция работи и със защитени неявни връзки.

Екранна снимка, която показва списъци с таблици, изгледи и съхранени процедури, които могат да бъдат добавени към приложението ви.

Ако не видите веднага съхранената процедура, е по-бързо да я потърсите.

След като изберете съхранена процедура, се появява дъщерен възел и можете да посочите съхранената процедура като безопасна за използване за галерии и таблици. Ако поставите отметка в тази опция, можете да зададете съхранената процедура като свойство Елементи за галерии за таблици, които да се използват във вашето приложение.

Активирайте тази опция само ако:

  1. Няма странични ефекти от извикването на тази процедура при поискване, многократно, когато Power Apps опреснява контролата. Когато се използва със свойство Елементи на галерия или таблица, Power Apps извиква съхранената процедура, когато системата прецени, че е необходимо обновяване. Не можете да контролирате кога да се извиква съхранената процедура.
  2. Количеството данни, които връщате в съхранената процедура, е скромно. Извикванията на действия, като например съхранени процедури, нямат ограничение за броя на извлечените редове. Те не се страницират автоматично на стъпки от 100 записа, като например таблични източници на данни, като например таблици или изгледи. Така че, ако съхранената процедура върне твърде много данни (много хиляди записи), приложението ви може да се забави или да се срине. От съображения за производителност трябва да донесете по-малко от 2,000 записа.

Важно

Схемата на върнатите стойности на съхранената процедура трябва да бъде статична. Това означава, че не се променя от повикване на повикване. Например, ако извикате съхранена процедура и тя връща две таблици, тя винаги трябва да връща две таблици. Можете да работите както с въведени, така и с невъведени резултати. Структурата на резултатите трябва да бъде една и съща от повикване до повикване. Ако схемата на резултатите е динамична, тогава резултатите ще бъдат невъведени и ще трябва да предоставите тип, за да ги използвате Power Apps. За повече информация отидете на Невъведени резултати.

Пространството от имена на SQL предварително изчакано за името на съхранената процедура

Името на пространството от имена на SQL Server, в което се съхранява съхранената процедура, е предварително издържано от името на съхранената процедура, в която е създадена за нея Power Apps. Например, всички съхранени процедури в пространството от имена 'DBO'SQL Server имат 'dbo' в началото на името.

Пример

Когато добавите съхранена процедура, може да видите повече от един източник на данни във вашия проект.

Екранна снимка, която показва източници на SQL данни.

Извикване на съхранена процедура

За да използвате съхранена процедура, Power Apps първо поставете префикс на името на съхранената процедура с името на конектора, свързан с него, и името на съхранената процедура. "Paruntimedb.dbonewlibrarybook" в примера илюстрира този модел. Когато Power Apps се внесе съхранената процедура, тя обединява пространството от имена и името на процедурата и 'dbo.newlibrarybook' става 'dbonewlibrarybook'.

Аргументите се предават като Power Apps запис с наименувани двойки стойности:

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

Не забравяйте да преобразувате стойности, ако е необходимо, докато ги предавате във вашата съхранена процедура, тъй като четете от текстова стойност в Power Apps. Например, ако актуализирате цяло число в SQL, трябва да преобразувате текста в полето с помощта на "Value()".

Директно извикване на съхранени процедури.

Достъп до резултати

Съхранената процедура може да върне код, стойности от параметри Out или резултатите от заявките. За достъп до тези резултати използвайте следните модели:

Код за връщане

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

Използвайте това за достъп до резултатите от декларация за връщане.

Изходни параметри

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

Обърнете внимание, за да използвате името на параметъра, както се показва в полезния товар на JSON.

Набори от резултати

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

Допълнителни таблици могат да бъдат достъпни чрез тяхното име (например Таблица 1, Таблица 2, Таблица 3, ... )

Невъведени резултати

Някои сложни съхранени процедури връщат нетипизиран резултат. Тези резултати не са достъпни директно. Първо трябва да предоставите тип. Можете да получите достъп до данните, като използвате следния модел.

В този пример първо изтегляме резултатите в променлива с име "MyUntypedObject". След това изваждаме 'Table1' от тази променлива и я поставяме в променлива с име 'table1'. Тази стъпка не е строго необходима. Полезно е обаче да поставите всички резултати в променлива в даден момент и след това да извадите частите, от които се нуждаете. След това обхождаме таблица1 и извличаме JSON елементите в именувани двойки стойности. Не забравяйте да съпоставите имената с имената, които се връщат в полезния товар на JSON. За да потвърдите, отворете Power Apps монитор и погледнете секцията на тялото на възела за данни за запис.

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

Можете да получите достъп до съхранена процедура за свойството Елементи на галерия, след като я обявите за безопасна за потребителския интерфейс. Посочете името на източник на данни и името на съхранената процедура, последвано от "ResultSets". Можете да получите достъп до множество резултати, като препратите към набора от върнати таблици, като Таблица 1, Таблица 2 и т.н.

Например, достъпът ви до съхранена процедура от източник на данни с име "Paruntimedb" със съхранена процедура с име "dbo.spo_show_all_library_books()" ще изглежда по следния начин.

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Това изпълва галерията със записи. Съхранените процедури обаче са допълнение на поведение на действие към табличния модел. Refresh() работи само с таблични източници на данни и не може да се използва със съхранени процедури. След това трябва да обновите галерията, когато се създава, актуализира или изтрива запис. Когато използвате Submit() във формуляр за табличен източник на данни, той ефективно извиква Refresh() под кориците и актуализира галерията.

За да заобиколите това ограничение, използвайте променлива в свойството OnVisible за екрана и задайте съхранената процедура на променливата.

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

И след това задайте свойството "Items" на галерията на името на променливата.

SP_Books

След това, след като създадете, актуализирате или изтриете запис с извикване на съхранената процедура, задайте променливата отново. Това актуализира галерията.

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

Познати проблеми

Източниците на данни на SQL вече не добавят [dbo] префикс към името на източник на данни

Префиксът [dbo] не служи за никаква практическа цел, Power Apps тъй като имената на източници на данни се премахват автоматично. Съществуващите източници на данни не са засегнати от тази промяна, но всички новодобавени източници на данни на SQL не включват префикса.

Ако трябва да актуализирате голям брой формули в някое от вашите приложения, Power Apps помощната програма за пакет и разопаковане на изходни файлове може да се използва за извършване на глобално търсене и замяна.

Бележка

Започвайки от версия 3.21054, автоматично ще актуализираме счупените препратки към наследените имена към новото име на източник на данни, след като прочетем източник на данни.

Следващи стъпки

Бележка

Можете ли да ни споделите повече за езиковите си предпочитания за документацията? Попълнете кратко проучване. (имайте предвид, че това проучване е на английски език)

Проучването ще отнеме около седем минути. Не се събират лични данни (декларация за поверителност).