共用方式為


從 Power Apps 連線到 SQL Server 概觀

使用 Power Fx 公式,有不同的方式可以連線到應用程式中 SQL Server 中的資料。 您可以直接存取資料,也可以使用檢視或儲存過程在應用程式中創建、更新或刪除資料。

必要條件

要直接存取資料,您可以為 SQL Server 資料創建一個 從資料 開始的應用程式。 此方法允許您獲得一個基本的、可工作的應用程式,您可以使用檢視和存儲過程對其進行修改。

  1. 登入 Power Apps,然後前往應用程式頁面。

  2. 選擇新應用程式>開始使用資料

    顯示如何從 New app (新增應用程式) 功能表下的 data 開始建立應用程式的螢幕截圖。

  3. 開始使用資料頁面中,選擇連接外部資料

  4. 選擇要開始的資料集下,選擇從 SQL

    如果您已有 SQL Server 連接,則會載入該連接。

    注意

    如果您還沒有 SQL Server 連線,系統會提示您建立連線。

  5. 選取您的 SQL 連線。

  6. 輸入您的伺服器名稱和資料庫名稱,然後選擇連線。 從顯示的表清單中選擇一個表。

    顯示 Create an app (建立應用程式) 頁面的螢幕截圖,您可以在其中選擇 SQL Server 連接,包括一個表。

    注意

    一次只會顯示一個連線。 若要使用其他連接,請選擇 SQL 連接上的 ... 滾動功能表,然後找到新連接或建立新 SQL 連接。

  7. 選取建立應用程式

存取資料

一旦您的應用程式連接到 SQL Server,您就可以存取資料:存取 SQL Server 中的資料

檢視結果

若要查看 SQL 查詢的結果,請參閱:在 SQL Server 中檢視結果

Power Apps 資料類型對應

SQL Server Power Apps
bigintdecimalintmoneynumericsmallintsmallmoneytinyintfloatreal Number
charncharvarcharnvarchartextntext 文字
bit 布林值
datedatetimedatetime2smalldatetimedatetimeoffsettime DateTime
uniqueidentifier Guid

注意

如果 SQL Server 資料類型未出現在上一個資料表中,則不支援該資料類型。 不支援的資料類型包括下列範例:binary()varbinary()sql_variant xmlimagecursorrowversionhierarchyid空間幾何類型、空間地理類型和表格。 此外,不支援 'tinyint' 和 'smallint' 作為主鍵。

Power Apps 函式和作業可委派至 SQL Server

Power Apps 可以將 Power Fx 查詢作業 (例如篩選) 委派給後端資料來源進行處理。 委派可讓後端資料服務 (例如 SQL Server) 執行篩選工作,因此只需要將少數記錄傳輸至您的裝置。

下表顯示哪些作業可依資料類型委派給 SQL Server。 以 、 OrNot 結合And的運算式是可委派的。

操作或功能 Number 文字 布林值 DateTime Guid
*, +, -, / Yes - - -
<<=>>= Yes Yes -
=<> Yes Yes Yes Yes Yes
Average Yes - - - -
EndsWith - 是的 [1] - - -
Filter Yes Yes Yes 是的 [2] Yes
In (子字串) - 是的 [3] - - -
IsBlank [4]
Len (長度) - 是 [5] - - -
Lookup Yes Yes Yes Yes Yes
Max Yes - - -
Min Yes - - -
Search Yes -
Sort Yes Yes Yes Yes -
SortByColumns Yes Yes Yes Yes -
StartsWith - 是的 [6] - - -
Sum Yes - - - -
UpdateIf, RemoveIf [7] Yes Yes Yes Yes Yes

註釋

  1. 支援但不支援 (EndsWith(\<column>, "string value"))(EndsWith("string value", \<column>))。 如果 char(10) 列的值為 “hello”, EndsWith(\<column>, "llo") 則根據設計傳回 false。 char(10) 欄有 10 個字元。

  2. 直接日期篩選不適用於具有內部部署資料閘道的 SQL Server。 不過,您可以建立有效的計算欄。 例如,您可以建立:
    ALTER TABLE myTable ADD DateAsInt AS (YEAR([date]) * 10000 + MONTH([date]) * 100 + DAY([date]))
    然後根據計算的數字列進行篩選。

  3. 支援 ,但不(\<column> in "string value")支援 ("string value" in \<column>)

  4. 運算式 (例如 won't Filter('[dbo].[MyOrders]', !IsBlank(CustomerId)) 委派給伺服器)。 不過,您可以使用 之類 Filter('[dbo].[MyOrders]', CustomerId <> Blank())的運算式,它會委派給伺服器,而且語意上很接近。 不同之處在於第二個運算式不會將空字串 (“”) 視為空。 雖然表達式並不等效,但後者可能適合您的目的。 您無法將此方法用於 Guid 資料類型。

  5. Power Apps 委派函 Len 式,但行為可能無法如您預期般運作。 在 SQL Server 中,值為 “hello” 的 char(10) 資料行長度一律為 10。 不過,Power Apps 會將該字串視為長度為 5,這可能會導致差異和混淆。 不要在 SQL Server 上使用char/nchar,而是改用。varchar/nvarchar

  6. 支援 ,但不支援(StartsWith(\<column>, "string value"))(StartsWith("string value", \<column>))

  7. UpdateIf 和 RemoveIf 在本機運作,但會模擬委派限制為 500/2000 筆記錄。 他們陸續將記錄降低到非授權 500/2000 記錄限制之外。 會收集符合 If 條件的記錄。 一般而言,最多會個別收集 500/2000 筆記錄,然後每次執行變更。 不過,如果現有的本機資料快取很大,則可能會更新更多記錄,因為函式可能可以存取更多記錄進行評估。