從 Power Apps 連線到 SQL Server

您可以連接到 Azure 或內部部署資料庫中 SQL Server。

注意

新建立的 SQL 資料來源不再像在先前版本的 Power Apps 中一樣,以 [dbo] 為前綴。

如需詳細資訊,請參閱 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 連接到您的應用程式時,您現在可以新增表格和檢視表或預存程序。 此功能也適用於安全隱式連接。

顯示能夠新增至您的應用程式的表格、檢視表和預存程序清單的螢幕截圖。

如果您沒有立即看到您的預存程序,用搜尋的會比較快。

選取完預存程序後,將出現一個子節點,您可以將預存程序指定為可安全用於資源庫和表格。 如果選取此選項,則可以將預存程序指派為 Items 屬性,供表格在應用程式中的資源庫使用。

只在以下情況啟用此選項:

  1. 每當 Power Apps 重新整理控制項,按需求多次調用此程序,都沒有任何副作用時。 與資源庫或表格的 Items 屬性一起使用時,每當系統確定需要重新整理時,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

使用它來訪問 return 語句的結果。

輸出參數

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

請注意,請使用 JSON 有效負載中顯示的參數名稱。

結果集

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

可以通過其名稱訪問其他表(例如,Table1、Table2、Table3、...

非類型化結果

一些複雜的存儲過程返回非類型化結果。 無法直接訪問這些結果。 您必須首先提供一個類型。 您可以使用以下模式存取資料。

在此示例中,我們首先將結果提取到名為“MyUntypedObject”的變數中。 然後我們從該變數中提取「Table1」 ,並將其放入名為「table1」 的變數中。 此步驟並非絕對必要。 但是,在 指向 時間將所有結果放入變數中,然後拉出所需的部分非常有用。 然後,我們遍曆 table1 並提取命名值對中的 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)
        }
    )
);

當您聲明資源庫的 Items 屬性對 UI 是安全的之 後,您就可以存取該預存程序。 引用資料來源名稱和預存程序的名稱後,會是「ResultSets」。 您可以透過引用傳回的表格集 (如表 1、表 2 等) 來存取多個結果。

例如,您使用名為「dbo.spo_show_all_library_books()」的預存程序從名為「Paruntimedb」的資料來源存取預存程序,將如下所示。

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 開始,我們將在讀取資料來源後,自動將損壞的舊名稱參考更新為新的資料來源名稱。

後續步驟

注意

是否能請您告知您偏好的慣用文件語言? 請填寫問卷。 (請注意,本問卷為英文版)

完成問卷大約需要七分鐘。 本問卷將不會收集個人資料 (隱私權聲明)。