เข้าถึงข้อมูลใน SQL Server
เพิ่มแหล่งข้อมูล
สิทธิ์เข้าถึงโดยตรง:
ถ้าคุณเลือกตัวเลือก เริ่มต้นด้วยข้อมูล เมื่อสร้างแอป คุณสมบัติ รายการ ในแกลเลอรีของคุณจะมีสูตร Power Fx ที่มีชื่อแหล่งข้อมูลที่ชี้ไปยังตารางพื้นฐานข้อมูลของคุณโดยตรง
ตัวอย่างเช่น ถ้าคุณมีตาราง BOOKLENDING
คุณจะเห็นสูตรต่อไปนี้:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
มุมมองและ Stored Procedure:
รูปแบบการเข้าถึงข้อมูลแบบมืออาชีพทั่วไปคือการใช้มุมมองแล้วจัดเก็บ กระบวนงานสำหรับการสร้าง อัปเดต และลบ แทนที่จะอนุญาตการเข้าถึงโดยตรง หากคุณต้องการใช้มุมมองหรือก Stored Procedure คุณต้องเปลี่ยนสูตรตัวอย่าง ในทำนองเดียวกัน ฟอร์มสำหรับเรกคอร์ดไม่ได้ใช้วิธีการโดยตรงในตัวของสูตร SubmitForm()
เช่นกัน
ทริกเกอร์:
รูปแบบฐานข้อมูลหนึ่งคือการใช้ทริกเกอร์บนตาราง ถ้าตารางมีทริกเกอร์ คุณจะไม่สามารถใช้รูปแบบ Submit()
โดยตรงเพื่อสร้าง อัปเดต และลบได้
Submit()
มีข้อขัดแย้งระหว่างการจัดการทริกเกอร์ SQL และลักษณะการทำงานในตัว Power Apps ซึ่งใช้พารามิเตอร์เอาต์พุตเดียวกัน
อย่างไรก็ตาม คุณสามารถเข้าถึงตารางได้โดยตรงเพื่อวัตถุประสงค์ในการคิวรี แต่สำหรับการจัดการ Create
หรือ Update
Delete
คุณต้องเรียกใช้ Stored Procedure
[!หมายเหตุ]
ตัวเชื่อมต่อเซิร์ฟเวอร์ SQL เช่นเดียวกับตัวเชื่อมต่อทั้งหมดที่ทำงานกับข้อมูลเชิงสัมพันธ์ จะถือว่าตารางมีคีย์หลัก คีย์หลักมีความสำคัญต่อการค้นหาเรกคอร์ดเฉพาะที่จะอัปเดต ถ้าตาราง SQL Server ไม่มีคีย์หลัก ข้อมูลจะถือว่าเป็นแบบอ่านอย่างเดียว หากคุณมีสิทธิ์เข้าถึงและแก้ไขตาราง SQL Server ให้พิจารณาเพิ่มคีย์ที่สร้างขึ้นโดยอัตโนมัติ
ใช้มุมมอง
มุมมอง คือคิวรีที่บันทึกไว้ซึ่งแสดงเป็นตารางข้อมูลเดียว
มุมมองจะปรากฏในรายการตารางที่คุณสามารถเลือกได้เมื่อคุณเพิ่มแหล่งข้อมูล มุมมองสนับสนุนเฉพาะคิวรี ไม่ใช่การอัปเดต คุณต้องใช้ Stored Procedure สำหรับการอัปเดต
ถ้าคุณสร้างตารางที่มีตัวเลือก Start with data
คุณจะได้รับหน้าจอและสูตรที่แสดงเรกคอร์ดในแกลเลอรีและฟอร์ม คุณสามารถดูสูตรและฟังก์ชันการทำงานสำหรับการสร้าง แก้ไข และลบได้ อย่างไรก็ตาม หากคุณใช้มุมมอง คุณจะเห็นเฉพาะหน้าจอแสดงผลสำหรับแกลเลอรีและฟอร์มเท่านั้น
คุณอาจต้องการหน้าจอที่สร้างขึ้นโดยอัตโนมัติจาก Start with data
สำหรับมุมมอง
สำหรับตัวเลือกที่สร้างขึ้นโดยอัตโนมัตินี้:
- เลือก
Start with data
ด้วย ตารางพื้นฐาน - ลบและแทนที่แหล่งข้อมูลตาราง
ตัวอย่าง:
ตัวอย่างเช่น ถ้าคุณมีตาราง BOOKLENDINGVIEW
และเพิ่มลงในเป็นแหล่งข้อมูลสำหรับ Power Apps สูตรอาจเรียบง่าย ดังนี้:
BOOKLENDINGVIEW
คุณยังสามารถแทนที่ สร้าง อัปเดต และลบสูตรอื่นๆ ได้ด้วยแหล่งข้อมูลมุมมองและการเรียก Stored Procedure
ใช้ Stored Procedure
เมื่อคุณเพิ่มการเชื่อมต่อ SQL Server ลงในแอปของคุณ คุณสามารถเพิ่ม กระบวนงานที่เก็บไว้และเรียกใช้ได้โดยตรงใน Power Fx
หมายเหตุ
คุณลักษณะนี้ยังใช้งานได้กับการเชื่อมต่อโดยนัยที่ปลอดภัยอีกด้วย
เมื่อคุณเลือก Stored Procedure โหนดย่อยจะปรากฏขึ้น และคุณสามารถกำหนด Stored Procedure ว่า ปลอดภัยในการใช้กับแกลเลอรีและตาราง
Stored Procedure จะปลอดภัย หากไม่มีการดำเนินการที่อาจไม่พึงประสงค์ในบางสถานการณ์ ตัวอย่างเช่น หาก Stored Procedure รวบรวมบัญชีทั้งหมดจากเมืองที่กำหนด ให้ส่งอีเมลถึงพวกเขา คุณอาจไม่ต้องการให้ส่งอีเมลทุกครั้งที่มีการเรียก Stored Procedure ดังนั้น Stored Procedure ไม่ควรถูกทำเครื่องหมายว่าปลอดภัย
ทำเครื่องหมาย Stored Procedure ว่าปลอดภัยก็ต่อเมื่อ:
ไม่มีผลข้างเคียงในการเรียก กระบวนงานนี้ตามความต้องการ
คุณควรจะสามารถเรียกใช้ กระบวนงานได้หลายครั้งหรือเมื่อใดก็ตามที่ Power Apps รีเฟรชตัวควบคุม เมื่อใช้กับคุณสมบัติ Items ของแกลเลอรีหรือตาราง Power Apps จะเรียก Stored Procedure ทุกครั้งที่ระบบพิจารณาว่าจำเป็นต้องรีเฟรช คุณไม่สามารถควบคุมได้ว่าจะเรียก Stored Procedure เมื่อใด
คุณส่งคืนข้อมูลจำนวนเล็กน้อยใน Stored Procedure
การเรียกการดำเนินการ เช่น Stored Procedure จะไม่มีการจำกัดจำนวนแถวที่ดึงข้อมูล แถวจะไม่ถูกกำหนดหน้าโดยอัตโนมัติโดยเพิ่มทีละ 100 เรกคอร์ดอย่างแหล่งข้อมูลแบบตาราง เช่น ตารางหรือมุมมอง
หาก Stored Procedure ส่งคืนข้อมูลมากเกินไป (หลายพันเรกคอร์ด) แสดงว่าแอปของคุณอาจทำงานช้าลงหรือหยุดทำงาน ด้วยเหตุผลด้านประสิทธิภาพ ให้นำเข้าเรกคอร์ดน้อยกว่า 2,000 รายการ
ถ้าคุณทำเครื่องหมาย Stored Procedure ว่าปลอดภัย คุณสามารถกำหนด Stored Procedure ของคุณเป็นคุณสมบัติ รายการ ในแกลเลอรีสำหรับตารางที่จะใช้ในแอปของคุณได้
สำคัญ
Schema ของค่าส่งคืนของ Stored Procedure ควรเป็นแบบ คงที่ ดังนั้นค่าจะไม่เปลี่ยนแปลงเมื่อมีการเรียก ตัวอย่างเช่น หาก Stored Procedure ส่งคืนสองตาราง Stored Procedure จะส่งกลับสองตารางเสมอ คุณสามารถทำงานกับผลลัพธ์ที่กำหนดชนิดหรือไม่กำหนดชนิดก็ได้
โครงสร้างของผลลัพธ์ยังต้องคงที่ ตัวอย่างเช่น หากสคีมาของผลลัพธ์เป็นแบบ ไดนามิก ผลลัพธ์จะถูกไม่ได้กำหนดชนิด และคุณต้องระบุชนิดเพื่อนำไปใช้ใน Power Apps สำหรับข้อมูลเพิ่มเติม โปรดดู ผลลัพธ์ที่ไม่ได้ระบุชนิด
SQL Namespace ที่นำหน้าชื่อ Stored Procedure
ชื่อ Namespace ของ SQL Server ที่คุณจัดเก็บกระบวนงาน จะนำหน้าชื่อ Stored Procedure ตัวอย่างเช่น Stored Procedure ทั้งหมดใน Namespace ของ SQL Server 'DBO' มี 'dbo' ที่จุดเริ่มต้นของชื่อ
ตัวอย่างเช่น เมื่อคุณเพิ่ม Stored Procedure คุณอาจเห็นแหล่งข้อมูลมากกว่าหนึ่งแหล่งในโครงการของคุณ
การเรียก Stored Procedure
เมื่อต้องการใช้ Stored Procedure ใน Power Apps เก็บไว้ ให้นำหน้าชื่อ Stored Procedure ด้วยชื่อของตัวเชื่อมต่อที่เชื่อมโยงอยู่ ตามด้วยชื่อ Stored Procedure เช่น Paruntimedb.dbonewlibrarybook
หมายเหตุ
เมื่อ Power Apps นำเข้า Stored Procedure มันจะเชื่อม Namepce และชื่อกระบวนงานเข้าด้วยกันเพื่อให้ dbo.newlibrarybook
กลายเป็น dbonewlibrarybook
อาร์กิวเมนต์จะถูกส่งผ่านเป็นเรกคอร์ด Power Apps ที่มีคู่ค่าที่ระบุชื่อ:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
เคล็ดลับ
อย่าลืมแปลงค่าหากจำเป็นเมื่อคุณส่งผ่านไปยัง Stored Procedure เนื่องจากคุณกำลังอ่านจากค่าข้อความใน Power Apps ตัวอย่างเช่น หากคุณกำลังอัปเดตจำนวนเต็มใน SQL คุณต้องแปลงข้อความในฟิลด์โดยใช้ Value()
ต่อไปนี้คือตัวอย่างของลักษณะของ Stored Procedure เมื่อกำหนดให้กับคุณสมบัติ OnSelect
ตัวแปรและ Stored Procedure
คุณสามารถเข้าถึง Stored Procedure สำหรับคุณสมบัติ Items ของแกลเลอรีได้หลังจากที่คุณประกาศว่าปลอดภัยสำหรับ UI อ้างอิงชื่อแหล่งข้อมูลและชื่อของ Stored Procedure ตามด้วย ResultSets
คุณสามารถเข้าถึงผลลัพธ์ได้หลายรายการโดยอ้างอิงชุดของตารางที่ส่งคืน เช่น ตารางที่ 1 ตารางที่ 2 ฯลฯ
ตัวอย่างเช่น Stored Procedure ซึ่งเข้าถึงได้จากตาราง Paruntimedb
ที่มีชื่อ dbo.spo_show_all_library_books()
จะมีลักษณะดังนี้:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
คิวรีนี้จะเติมเรกคอร์ดลงในแกลเลอรี อย่างไรก็ตาม กระบวนงานที่เก็บไว้เป็นลักษณะการดำเนินารบนโมเดลตาราง
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);
ใช้ Power Automate เพื่อเรียก Stored Procedure
Power Automate จัดการกับการทำงานแบบอะซิงโครนัสได้ดีที่สุด คุณสามารถเรียก Stored Procedure โดยเป็นส่วนหนึ่งของชุดการเรียกในกระบวนการทางธุรกิจ
เมื่อต้องการเรียก Power Automate ตามด้วยการเรียกไปยัง Stored Procedure ให้สร้างตัวแปรอินพุตเป็นส่วนหนึ่งของโฟลว์ของคุณ
จากนั้นส่งตัวแปรอินพุตของคุณไปยังการเรียก Stored Procedure ของคุณ
เพิ่มโฟลว์ Power Automate นี้ไปยังแอปของคุณและเรียกใช้โฟลว์นั้น อาร์กิวเมนต์ทางเลือกจะถูกส่งผ่านเป็นเรกคอร์ด "{ … }” ตัวอย่างต่อไปนี้มีอาร์กิวเมนต์ทางเลือกทั้งหมด