แชร์ผ่าน


เชื่อมต่อกับ 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. เมื่อคุณดำเนินการเสร็จสิ้นแล้วเลือก สร้างแอป

เรียก Stored Procedure โดยตรงใน Power Fx (พรีวิว)

ตอนนี้คุณสามารถเรียกโปรซิเจอร์ที่จัดเก็บไว้ใน SQL Server ได้โดยตรง Power Fx โดยค่าเริ่มต้น สวิตช์ ใหม่ นี้ควรจะเปิดอยู่ หากไม่เป็นเช่นนั้นคุณสามารถเปิดใช้งานได้

  1. ไปที่ การตั้งค่า > การอัปเดต > ใหม่
  2. ค้นหา Stored Procedure
  3. ตั้งค่าการสลับเป็น เปิด สำหรับ SQL Server Stored Procedure
  4. บันทึกและเปิดแอปใหม่อีกครั้ง

ภาพหน้าจอที่แสดงการสลับ SQL Server Stored Procedure ตั้งค่าเป็นเปิด

เมื่อคุณเพิ่มการเชื่อมต่อ SQL Server ให้กับแอปของคุณ คุณสามารถเพิ่มตารางและมุมมองหรือ Stored Procedure ได้แล้ว คุณลักษณะนี้ยังใช้งานได้กับการเชื่อมต่อโดยนัยที่ปลอดภัยอีกด้วย

ภาพหน้าจอที่แสดงรายการตาราง มุมมอง และ Stored Procedure ที่สามารถเพิ่มลงในแอปของคุณ

หากคุณไม่เห็น Stored Procedure ของคุณในทันที การค้นหาจะเร็วกว่า

เมื่อคุณเลือก Stored Procedure โหนดย่อยจะปรากฏขึ้น และคุณสามารถกำหนด Stored Procedure ว่า ปลอดภัยในการใช้กับแกลเลอรีและตาราง หากคุณเลือกตัวเลือกนี้ คุณสามารถกำหนด Stored Procedure ของคุณเป็นคุณสมบัติ Items ของแกลเลอรีสำหรับตารางที่จะใช้ในแอปของคุณ

เปิดใช้งานตัวเลือกนี้ เฉพาะในกรณีที่:

  1. ไม่มีผลข้างเคียง ในการเรียกขั้นตอนนี้ตามความต้องการ หลายครั้ง ทุกครั้งที่ Power Apps รีเฟรชตัวควบคุม เมื่อใช้กับคุณสมบัติ Items ของแกลเลอรีหรือตาราง Power Apps จะเรียก Stored Procedure ทุกครั้งที่ระบบพิจารณาว่าจำเป็นต้องรีเฟรช คุณไม่สามารถควบคุมได้ว่าจะเรียก Stored Procedure เมื่อใด
  2. จำนวนข้อมูลที่คุณส่งคืนใน Stored Procedure อยู่ที่ระดับ ปานกลาง การเรียกการดำเนินการ เช่น Stored Procedure ไม่มีการจำกัดจำนวนแถวที่ดึงข้อมูล แถวจะไม่ถูกกำหนดหน้าโดยอัตโนมัติโดยเพิ่มทีละ 100 เรกคอร์ดอย่างแหล่งข้อมูลแบบตาราง เช่น ตารางหรือมุมมอง ดังนั้น หาก Stored Procedure ส่งคืนข้อมูลมากเกินไป (หลายพันเรกคอร์ด) แอปของคุณอาจทำงานช้าลงหรือหยุดทำงาน ด้วยเหตุผลด้านประสิทธิภาพ คุณควรนำเข้าข้อมูลน้อยกว่า 2,000 รายการ

ข้อสำคัญ

สคีมาของค่าที่ส่งคืนของ Stored Procedure ควรเป็นแบบ คงที่ หมายความว่ามันไม่เปลี่ยนแปลงจากการโทรครั้งหนึ่งไปสู่อีกครั้งหนึ่ง ตัวอย่างเช่น หากคุณเรียกกระบวนการจัดเก็บไว้ และกระบวนการส่งคืนตารางสองตาราง กระบวนการนั้นควร ส่งคืนตารางสองตารางเสมอ คุณสามารถทำงานกับผลลัพธ์ทั้งแบบพิมพ์หรือไม่ได้พิมพ์ก็ได้ โครงสร้างของผลลัพธ์จะต้องเหมือนกันในแต่ละครั้ง หากโครงร่างของผลลัพธ์เป็น แบบไดนามิก ผลลัพธ์จะไม่มีการระบุประเภท และคุณจะต้องระบุประเภทเพื่อใช้ใน Power Apps สำหรับข้อมูลเพิ่มเติม โปรดไปที่ ผลลัพธ์ที่ไม่ได้พิมพ์

เนมสเปซ SQL ถูกเพิ่มไว้ล่วงหน้าสำหรับชื่อกระบวนการที่จัดเก็บไว้

ชื่อเนมสเปซของ SQL Server ที่เก็บกระบวนการจัดเก็บไว้ จะถูกเพิ่มไว้ข้างหน้าชื่อของกระบวนการจัดเก็บที่สร้างขึ้นสำหรับกระบวนการจัดเก็บนั้นใน Power Apps ตัวอย่างเช่น โปรซีเดอร์ที่เก็บไว้ทั้งหมดในเนมสเปซ 'DBO' SQL Server จะมี 'dbo' อยู่ที่จุดเริ่มต้นของชื่อ

ตัวอย่างเช่น

เมื่อคุณเพิ่ม Stored Procedure คุณอาจเห็นแหล่งข้อมูลมากกว่าหนึ่งรายการในโครงการของคุณ

ภาพหน้าจอที่แสดงแหล่งข้อมูล SQL

การเรียกใช้กระบวนการจัดเก็บ

หากต้องการใช้ Stored Procedure ใน Power Apps ขั้นแรกให้เพิ่มส่วนนำหน้าชื่อ Stored Procedure ด้วยชื่อของตัวเชื่อมต่อที่เกี่ยวข้องและชื่อ Stored Procedure 'Paruntimedb.dbonewlibrarybook' ในตัวอย่างนี้แสดงให้เห็นถึงรูปแบบนี้ เมื่อนำกระบวนการที่จัดเก็บไว้เข้ามา มันจะเชื่อมโยงเนมสเปซและชื่อกระบวนการ และ 'dbo.newlibrarybook' จะกลายเป็น 'dbonewlibrarybook' Power Apps

อาร์กิวเมนต์จะถูกส่งเป็นเรกคอร์ดที่มีคู่ค่าที่มีชื่อ: Power Apps

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

อย่าลืมแปลงค่าตามที่จำเป็นเมื่อคุณส่งค่าเหล่านั้นไปยังกระบวนการที่จัดเก็บไว้ตามความจำเป็น เนื่องจากคุณกำลังอ่านจากค่าข้อความใน Power Apps ตัวอย่างเช่น หากคุณกำลังอัปเดตจำนวนเต็มใน SQL คุณต้องแปลงข้อความในฟิลด์โดยใช้ 'Value()'

การเรียก Stored Procedure โดยตรง

การเข้าถึงผลลัพธ์

กระบวนการที่เก็บไว้สามารถส่งคืนรหัส ค่าจากพารามิเตอร์ 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' ขั้นตอน นี้ไม่จำเป็นอย่างยิ่ง อย่างไรก็ตาม มีประโยชน์ที่จะใส่ผลลัพธ์ทั้งหมดไว้ในตัวแปร ณ จุดหนึ่งในเวลา จากนั้นดึงส่วนที่คุณต้องการออกมา จากนั้นเราจะวนซ้ำผ่านตาราง 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)
        }
    )
);

คุณสามารถเข้าถึง Stored Procedure สำหรับคุณสมบัติ Items ของแกลเลอรีได้หลังจากที่คุณประกาศว่าปลอดภัยสำหรับ UI อ้างอิงชื่อแหล่งข้อมูลและชื่อของ Stored Procedure ด้วย 'ResultSets' คุณสามารถเข้าถึงผลลัพธ์ได้หลายรายการโดยอ้างอิงชุดของตารางที่ส่งคืน เช่น ตารางที่ 1 ตารางที่ 2 ฯลฯ

ตัวอย่างเช่น การเข้าถึง Stored Procedure นอกแหล่งข้อมูลที่ชื่อ 'Paruntimedb' ขณะที่ Stored Procedure ที่ชื่อ 'dbo.spo_show_all_library_books()' จะมีลักษณะดังต่อไปนี้

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

ซึ่งจะเติมข้อมูลแกลเลอรีด้วยเรกคอร์ด อย่างไรก็ตาม Stored Procedure เป็นการเพิ่มลักษณะการทำงานของ การดำเนินการ ให้กับโมเดลแบบตาราง Refresh() ใช้ได้กับแหล่งข้อมูลแบบตารางเท่านั้น และไม่สามารถใช้กับ Stored Procedure จากนั้น คุณจะต้องรีเฟรชแกลเลอรีเมื่อมีการสร้าง อัปเดต หรือลบเรกคอร์ด เมื่อคุณใช้ Submit() บนแบบฟอร์มสำหรับตาราง แหล่งข้อมูล ระบบจะเรียก Refresh() ภายใต้หน้าปกและอัปเดตแกลเลอรีอย่างมีประสิทธิภาพ

เมื่อต้องการหลีกเลี่ยงข้อจำกัดนี้ ให้ใช้ตัวแปรในคุณสมบัติ OnVisible สำหรับหน้าจอ และตั้งค่า Stored Procedure ให้กับตัวแปร

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

จากนั้นตั้งค่าคุณสมบัติ 'Items' ให้กับแกลเลอรีเป็นชื่อตัวแปร

SP_Books

จากนั้นหลังจากที่คุณสร้าง อัปเดต หรือลบเรกคอร์ดที่มีการเรียกไปยัง Stored Procedure ให้ตั้งค่าตัวแปรอีกครั้ง ซึ่งจะเป็นการอัปเดตแกลเลอรี

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 Source File Pack และ Unpack Utility สามารถใช้เพื่อทำการค้นหาและแทนที่ส่วนกลาง

หมายเหตุ

โดยเริ่มต้นในเวอร์ชัน 3.21054 เราจะอัปเดตการอ้างอิงชื่อเดิมที่ใช้งานไม่ได้ไปยังชื่อแหล่งข้อมูลใหม่โดยอัตโนมัติ หลังจากการอ่านแหล่งข้อมูล

ขั้นตอนถัดไป

หมายเหตุ

บอกให้เราทราบเกี่ยวกับภาษาที่คุณต้องการในคู่มือ ทำแบบสำรวจสั้นๆ (โปรดทราบว่าแบบสำรวจนี้เป็นภาษาอังกฤษ)

แบบสำรวจนี้ใช้เวลาทำประมาณเจ็ดนาที ไม่มีการเก็บข้อมูลส่วนบุคคล (คำชี้แจงสิทธิ์ส่วนบุคคล)