從 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 調用 SQL Server 預存程序。

注意

不支援輸出參數。

  1. 請移至設定 > 即將推出的功能 > 預覽
  2. 搜索 預存程序
  3. SQL Server 預存程序的切換開關設為
  4. 儲存並重新開啟應用程式。

顯示 SQL Server 預存程序切換開關設為「開」的螢幕截圖。

當您新增 SQL Server 連接到您的應用程式時,您現在可以新增表格和檢視表或預存程序。 此功能也適用於安全隱式連接。

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

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

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

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

  1. 每當 Power Apps 重新整理控制項,按需求多次調用此程序,都沒有任何副作用時。 與資源庫或表格的 Items 屬性一起使用時,每當系統確定需要重新整理時,Power Apps 都會調用預存程序。 您無法控制何時調用預存程序。
  2. 您在預存程序中傳回的資料量為適中。 動作調用 (如預存程序)對檢索的列處沒有限制。 它們不會像表格或檢視表等表格資料來源那樣,為增加 100 條記錄自動分頁。 因此,如果預存程序傳回過多資料 (數千條記錄),則您的應用程式可能會變慢或閃退。 基於效能原因,您引入的記錄應少於 2,000 條。

重要

預存程序之傳回值的結構描述應該是靜態的。 這代表它不會隨調用而改變。 例如,如果您調用一個預存程序,且它傳回兩個表格,則它應始終傳回兩個表格。 如果結果的結構描述是動態的,則不應將其與 Power Apps 一起使用。 例如,如果您調用預存程序,而它有時會傳回一個表格,有時會傳回兩個表格,則它將無法在 Power Apps 中正常運作。 Power Apps 需要此調用的靜態結構描述。

範例

新增預存程序時,您可能會在專案中看到多個資料來源。

顯示 SQL 資料來源的螢幕截圖。

若要在 Power Apps 中使用預存程序,首先請在預存程序名稱前面加上與其和預存程序名稱相關之連接器的名稱。 範例中的「Paruntimedb.dbonewlibrarybook」即說明這種模式。 另請注意,當 Power Apps 引入預存程序時,它把全名連接成一串。 因此,「dbo.newlibrarybook」變成了「dbonewlibrarybook」。

請記住在把值傳到預存程序時,需視需求轉換值,因為您讀取的是 Power Apps 中的文字值。 例如,如果要在 SQL 中更新整數,則必須使用 'Value()' 轉換欄位中的文字。

直接調用預存程序。

使用資源庫

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

後續步驟

注意

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

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