หลังจากที่คุณโยกย้ายข้อมูลจาก Access ไปยัง SQL Server แล้ว คุณจะมีฐานข้อมูลไคลเอ็นต์/เซิร์ฟเวอร์ ซึ่งอาจเป็นโซลูชันภายในองค์กรหรือโซลูชันระบบคลาวด์แบบไฮบริดของ Azure แต่ Access จะกลายเป็นชั้นการนำเสนอและ SQL Server จะเป็นชั้นข้อมูล ถึงเวลาที่จะต้องคิดคำนึงถึงปัจจัยของโซลูชัน โดยเฉพาะอย่างยิ่ง ประสิทธิภาพของคิวรี ความปลอดภัย และความต่อเนื่องของธุรกิจ เพื่อให้คุณสามารถปรับปรุงและปรับขนาดโซลูชันฐานข้อมูลของคุณได้
ผู้ใช้ Access ที่เห็นคู่มือ SQL Server และ Azure เป็นครั้งแรกอาจรู้สึกกังวล จึงควรใช้คู่มือแนะนำเพื่อดูสิ่งสำคัญที่คุณอาจสนใจ เมื่อคุณผ่านการแนะนำนี้แล้ว คุณก็พร้อมที่จะสำรวจเทคโนโลยีฐานข้อมูลขั้นสูงยิ่งขึ้นและเดินทางได้ไกลยิ่งขึ้น
ในบทความนี้
การจัดการฐานข้อมูล ขับเคลื่อนความต่อเนื่องทางธุรกิจ |
คิวรีและตัวกรอง |
ชนิดข้อมูล |
จิปาถะ |
ขับเคลื่อนความต่อเนื่องทางธุรกิจ
คุณอาจต้องการเก็บโซลูชัน Access ไว้ใช้งานโดยมีการหยุดชะงักน้อยที่สุด แต่ตัวเลือกสำหรับฐานข้อมูล Access ถูกจำกัด การสำรองฐานข้อมูล Access จึงเป็นเรื่องสำคัญในการป้องกันข้อมูลของคุณ แต่ก็จำเป็นต้องให้ผู้ใช้ออฟไลน์ ดังนั้น จึงมีช่วงเวลาหยุดทำงานที่ไม่ได้วางแผนไว้ เนื่องจากการอัปเกรดและการบำรุงรักษาฮาร์ดแวร์/ซอฟต์แวร์ เครือข่ายขาดการเชื่อมต่อหรือไฟฟ้าดับ ฮาร์ดแวร์ทำงานบกพร่อง การเจาะระบบความปลอดภัย หรือแม้แต่การโจมตีทางไซเบอร์ เพื่อลดช่วงเวลาหยุดทำงานและผลกระทบต่อธุรกิจของคุณ คุณสามารถสำรองฐานข้อมูล SQL Server ขณะใช้งานได้ นอกจากนี้ SQL Server ยังมีกลยุทธ์ความพร้อมใช้งานสูง (HA) และการกู้คืนจากความเสียหาย (DR) อีกด้วย เทคโนโลยีทั้งสองอย่างที่ผสานรวมกันนี้ เรียกว่า HADR สำหรับข้อมูลเพิ่มเติม ให้ดู ความต่อเนื่องทางธุรกิจและการกู้คืนฐานข้อมูล และ ขับเคลื่อนความต่อเนื่องทางธุรกิจด้วย SQL Server (E-Book)
สำรองข้อมูลขณะใช้งาน
SQL Server จะใช้กระบวนการสำรองข้อมูลออนไลน์ที่สามารถดำเนินการขณะใช้งานฐานข้อมูลได้ คุณสามารถสำรองข้อมูลทั้งหมด สำรองข้อมูลบางส่วน หรือสำรองไฟล์ได้ การสำรองข้อมูลจะคัดลอกข้อมูลและบันทึกการทำทรานแซคชันเพื่อให้มั่นใจว่าสามารถกู้คืนการดำเนินการทั้งหมดได้อย่างสมบูรณ์แบบ โดยเฉพาะอย่างยิ่ง ในโซลูชันภายในองค์กรที่ควรระมัดระวังความแตกต่างระหว่างตัวเลือกการกู้คืนอย่างง่ายและการกู้คืนทั้งหมด และผลกระทบต่อบันทึกการทำทรานแซคชันที่เพิ่มมากขึ้น สำหรับข้อมูลเพิ่มเติม โปรดดู รูปแบบการกู้คืน
การดำเนินการสำรองข้อมูลส่วนใหญ่จะเกิดขึ้นทันที ยกเว้นการดำเนินการจัดการไฟล์และการลดขนาดฐานข้อมูล ในทางกลับกัน ถ้าคุณพยายามสร้างหรือลบไฟล์ฐานข้อมูลขณะกำลังดำเนินการสำรองข้อมูลอยู่ การดำเนินการจะล้มเหลว สำหรับข้อมูลเพิ่มเติม โปรดดู ภาพรวมข้อมูลสำรอง
HADR
เทคนิคขั้นพื้นฐานที่สุดสองเทคนิคในการรักษาความพร้อมใช้งานสูงและความต่อเนื่องของธุรกิจคือการจำลองและการจัดกลุ่ม SQL Server ผสานรวมเทคโนโลยีการจำลองและการจัดกลุ่มด้วย "อินสแตนซ์คลัสเตอร์ที่ใช้ในการแทนที่เมื่อเกิดข้อผิดพลาด" และ "กลุ่มความพร้อมใช้งานที่ทำงานตลอดเวลา"
การจำลองคือโซลูชันความต่อเนื่องระดับฐานข้อมูลที่จะสนับสนุนการย้ายโหนดเมื่อเกิดข้อผิดพลาดแทบจะในทันทีโดยการรักษาฐานข้อมูลที่สแตนด์บายอยู่ สำเนาฉบับสมบูรณ์หรือฉบับจำลองของฐานข้อมูลที่ใช้งานอยู่บนฮาร์ดแวร์แยกต่างหาก ซึ่งสามารถดำเนินการในโหมดซิงโครนัส (ความปลอดภัยสูง) ที่จะมีทรานแซคชันขาเข้าไปยังทุกเซิร์ฟเวอร์พร้อมๆ กัน หรือโหมดอะซิงโครนัส (ประสิทธิภาพสูง) ที่จะมีทรานแซคชันขาเข้าไปยังฐานข้อมูลที่ใช้งานอยู่ แล้วคัดลอกไปยังข้อมูลจำลองที่จุดที่กำหนดไว้ล่วงหน้า การจำลองคือโซลูชันระดับฐานข้อมูลและจะทำงานกับฐานข้อมูลที่ใช้รูปแบบการกู้คืนทั้งหมดเท่านั้น
การจัดกลุ่มคือโซลูชันระดับเซิร์ฟเวอร์ที่จะรวมเซิร์ฟเวอร์เป็นที่เก็บข้อมูลเดียว ซึ่งจะมองผู้ใช้เป็นอินสแตนซ์เดียว ผู้ใช้จะเชื่อมต่อกับอินสแตนซ์และไม่จำเป็นต้องทราบว่าอินสแตนซ์ใช้งานเซิร์ฟเวอร์ใดอยู่ ถ้าเซิร์ฟเวอร์หนึ่งล้มเหลวหรือจำเป็นต้องออฟไลน์เพื่อบำรุงรักษา ผู้ใช้จะยังคงสามารถใช้งานได้เหมือนเดิม แต่ละเซิร์ฟเวอร์ในกลุ่มจะได้รับการตรวจสอบโดยตัวจัดการกลุ่มตลอดเวลา ดังนั้น จึงสามารถตรวจพบได้เมื่อเซิร์ฟเวอร์ที่ใช้งานอยู่ในกลุ่มออฟไลน์หรือพยายามสลับไปใช้เซิร์ฟเวอร์ถัดไปในกลุ่ม แม้ว่าจะมีเวลาหน่วงในการสลับก็ตาม
สำหรับข้อมูลเพิ่มเติม ให้ดู อินสแตนซ์คลัสเตอร์ที่ใช้ในการแทนที่เมื่อเกิดข้อผิดพลาด และ กลุ่มความพร้อมใช้งานที่ทำงานตลอดเวลา: โซลูชันความพร้อมใช้งานสูงและการกู้คืนความเสียหาย
ความปลอดภัยของ SQL Server
แม้ว่าคุณจะสามารถป้องกันฐานข้อมูล Access โดยใช้ศูนย์ความเชื่อถือและการเข้ารหัสลับฐานข้อมูลได้ แต่ SQL Server มีฟีเจอร์ความปลอดภัยขั้นสูงยิ่งกว่า มาดูที่ความสามารถอันโดดเด่นสามอย่างสำหรับผู้ใช้ Access กันเถอะ สำหรับข้อมูลเพิ่มเติม ให้ดู การรักษาความปลอดภัย SQL Server
การรับรองความถูกต้องของฐานข้อมูล
วิธีการรับรองความถูกต้องฐานข้อมูลใน SQL Server มีอยู่สี่วิธี ซึ่งคุณสามารถระบุในสตริงการเชื่อมต่อ ODBC ได้ สำหรับข้อมูลเพิ่มเติม ให้ดู เชื่อมโยงหรือนำเข้าข้อมูลจากฐานข้อมูล Azure SQL Server แต่ละวิธีมีประโยชน์เฉพาะตัว
การรับรองความถูกต้องของ Windows แบบรวม ใช้ข้อมูลประจำตัวของ Windows สำหรับการยืนยันตัวตนผู้ใช้ บทความด้านความปลอดภัย และการจำกัดไม่ให้ผู้ใช้เข้าถึงฟีเจอร์และข้อมูล คุณสามารถใช้ข้อมูลประจำตัวโดเมนและจัดการสิทธิ์ของผู้ใช้ในแอปพลิเคชันได้อย่างง่ายดาย นอกจากนี้ คุณสามารถป้อน ชื่อบริการหลัก (SPN) ได้อีกด้วย สำหรับข้อมูลเพิ่มเติม ให้ดู เลือกโหมดการรับรองความถูกต้อง
การรับรองความถูกต้องของ SQL Server ผู้ใช้จะต้องเชื่อมต่อด้วยข้อมูลประจำตัวที่ตั้งค่าไว้ในฐานข้อมูล โดยการป้อน ID และรหัสผ่านเมื่อพวกเขาเข้าถึงฐานข้อมูลในเซสชันเป็นครั้งแรก สำหรับข้อมูลเพิ่มเติม ให้ดู เลือกโหมดการรับรองความถูกต้อง
การรับรองความถูกต้องของ Azure Active Directory แบบรวม เชื่อมต่อกับฐานข้อมูล Azure SQL Server โดยใช้ Azure Active Directory เมื่อคุณกำหนดค่าการรับรองความถูกต้องของ Azure Active Directory เรียบร้อยแล้ว จะไม่จำเป็นต้องเข้าสู่ระบบและใช้รหัสผ่านอีก สำหรับข้อมูลเพิ่มเติม ให้ดู การเชื่อมต่อกับฐานข้อมูล SQL โดยใช้การรับรองความถูกต้องของ Azure Active Directory
การรับรองความถูกต้องของรหัสผ่าน Active Directory เชื่อมต่อด้วยข้อมูลประจำตัวที่ตั้งค่าไว้ใน Azure Active Directory โดยการป้อนชื่อผู้ใช้และรหัสผ่านสำหรับการเข้าสู่ระบบ สำหรับข้อมูลเพิ่มเติม ให้ดู การเชื่อมต่อกับฐานข้อมูล SQL โดยใช้การรับรองความถูกต้องของ Azure Active Directory
เคล็ดลับ การตรวจหาภัยคุกคามเพื่อดูการแจ้งเตือนในกิจกรรมฐานข้อมูลที่ผิดปกติ ซึ่งแสดงถึงภัยคุกคามด้านความปลอดภัยที่อาจเกิดขึ้นกับฐานข้อมูล Azure SQL Server สำหรับข้อมูลเพิ่มเติม ให้ดู การตรวจสอบภัยคุกคามในฐานข้อมูล SQL
ความปลอดภัยของแอปพลิเคชัน
SQL Server มีฟีเจอร์ความปลอดภัยระดับแอปพลิเคชันสองฟีเจอร์ที่คุณสามารถใช้กับ Access ได้
การมาสก์ข้อมูลแบบไดนามิก ปกปิดข้อมูลที่ละเอียดอ่อนโดยการมาสก์จากผู้ใช้ที่ไม่มีสิทธิ์พิเศษ ตัวอย่างเช่น คุณสามารถมาสก์หมายเลขประกันสังคมบางส่วนหรือทั้งหมดได้
มาสก์ข้อมูลบางส่วน |
มาสก์ข้อมูลทั้งหมด |
คุณสามารถกำหนดการมาสก์ข้อมูลได้หลายวิธี และคุณสามารถนำไปใช้กับชนิดข้อมูลได้หลายชนิด การมาสก์ข้อมูลจะทำงานตามนโยบายที่ระดับตารางและคอลัมน์สำหรับกลุ่มผู้ใช้ที่กำหนดและจะใช้กับคิวรีแบบเรียลไทม์ สำหรับข้อมูลเพิ่มเติม ให้ดู การมาสก์ข้อมูลแบบไดนามิก
การรักษาความปลอดภัยระดับแถว คุณสามารถควบคุมการเข้าถึงไปยังแถวของฐานข้อมูลที่มีข้อมูลที่ละเอียดอ่อนตามคุณลักษณะของผู้ใช้ได้โดยใช้ความปลอดภัยระดับแถว ระบบฐานข้อมูลจะใช้ข้อจำกัดการเข้าถึงเหล่านี้ ซึ่งทำให้ระบบความปลอดภัยมีความแน่นหนาและเชื่อถือได้มากยิ่งขึ้น
เพรดิเคตการรักษาความปลอดภัยมีอยู่สองชนิด:
-
เพรดิเคตตัวกรองจะกรองแถวจากคิวรี ตัวกรองนี้ไม่สามารถมองเห็นได้ และผู้ใช้จะไม่ทราบเกี่ยวกับการกรอง
-
เพรดิเคตบล็อกจะป้องกันการดำเนินการที่ไม่ได้รับอนุญาตและมอบข้อยกเว้น ถ้าไม่สามารถดำเนินการได้
สำหรับข้อมูลเพิ่มเติม ให้ดู ความปลอดภัยระดับแถว
การปกป้องข้อมูลด้วยการเข้ารหัสลับ
ป้องกันข้อมูลที่ไม่ได้ใช้งาน กำลังถ่ายโอน และกำลังใช้งานอยู่โดยไม่ส่งผลกระทบต่อประสิทธิภาพการทำงานของฐานข้อมูล สำหรับข้อมูลเพิ่มเติม ให้ดู การเข้ารหัสลับของ SQL Server
การเข้ารหัสลับเมื่อไม่ได้ใช้งาน เพื่อป้องกันข้อมูลส่วนบุคคลจากการโจมตีสื่อแบบออฟไลน์ที่ชั้นที่เก็บข้อมูลจริง ให้ใช้การเข้ารหัสลับเมื่อไม่ได้ใช้งาน หรือที่เรียกว่า Transparent Data Encryption (TDE) ซึ่งหมายความว่าข้อมูลของคุณจะได้รับการป้องกัน แม้ว่าที่เก็บข้อมูลจริงจะถูกขโมยหรือถูกเผยแพร่อย่างไม่เหมาะสม TDE จะเข้ารหัสลับและถอดรหัสลับฐานข้อมูล ข้อมูลสำรอง และบันทึกการทำทรานแซคชันแบบเรียลไทม์โดยที่คุณไม่จำเป็นต้องเปลี่ยนแอปพลิเคชัน
การเข้ารหัสลับระหว่างการถ่ายโอน เพื่อป้องกันการสอดแนมและ "การโจมตีแบบปลอมเป็นคนกลาง" คุณสามารถเข้ารหัสลับข้อมูลที่ถ่ายโอนระหว่างเครือข่ายได้ SQL Server รองรับ Transport Layer Security (TLS) 1.2 สำหรับการติดต่อสื่อสารที่มีความปลอดภัยสูง โพรโทคอล Tabular Data Stream (TDS) มีไว้เพื่อป้องกันการติดต่อสื่อสารบนเครือข่ายที่ไม่น่าเชื่อถือ
การเข้ารหัสลับระหว่างการใช้งานบนไคลเอ็นต์ เมื่อต้องการป้องกันข้อมูลส่วนบุคคลขณะใช้งาน "Always Encrypted" คือฟีเจอร์ที่คุณกำลังมองหา ข้อมูลส่วนบุคคลจะได้รับการเข้ารหัสลับและถอดรหัสลับโดยโปรแกรมควบคุมบนคอมพิวเตอร์ไคลเอ็นต์โดยใช้เปิดเผยคีย์การเข้ารหัสลับต่อโปรแกรมฐานข้อมูล ด้วยเหตุนี้ จึงมีเพียงผู้ที่มีหน้าที่จัดการข้อมูลเท่านั้นที่สามารถมองเห็นข้อมูลที่เข้ารหัสลับได้ ซึ่งไม่รวมถึงผู้ใช้ที่มีสิทธิ์พิเศษขั้นสูงที่ไม่ควรได้รับสิทธิ์การเข้าถึง Always Encrypted อาจจำกัดฟังก์ชันบางอย่างของฐานข้อมูล เช่น การค้นหา การจัดกลุ่ม และการทำดัชนีคอลัมน์ที่เข้ารหัสลับ โดยขึ้นอยู่กับชนิดของการเข้ารหัสลับที่เลือก
จัดการกับข้อกังวลด้านความเป็นส่วนตัว
ข้อกังวลด้านความเป็นส่วนตัวได้เพิ่มขึ้นอย่างรวดเร็ว สหภาพยุโรปจึงได้ออกข้อบังคับด้านกฎหมายผ่านข้อบังคับทั่วไปเกี่ยวกับการคุ้มครองข้อมูล (GDPR) โชคดีที่ SQL Server เหมาะสมกับการตอบสนองต่อข้อบังคับเหล่านี้ คิดเกี่ยวกับการปรับใช้ GDPR ในสามขั้นตอน
ขั้นตอนที่ 1: ประเมินและจัดการความเสี่ยงด้านการปฏิบัติตามข้อบังคับ
GDPR มีข้อบังคับให้คุณระบุและจัดเก็บข้อมูลส่วนบุคคลที่คุณมีอยู่ในตารางและไฟล์ ข้อมูลอาจเป็นชื่อ รูปถ่าย ที่อยู่อีเมล รายละเอียดธนาคาร โพสต์บนเว็บไซต์โซเชียลมีเดีย ข้อมูลด้านการแพทย์ หรือแม้แต่ที่อยู่ IP
เครื่องมือใหม่อย่าง SQL Data Discovery and Classification ที่สร้างขึ้นใน SQL Server Management Studio จะช่วยเหลือคุณในการค้นหา จัดประเภท ติดป้ายกำกับ และรายงานข้อมูลที่ละเอียดอ่อนโดยการใช้แอตทริบิวต์ของเมตาดาต้าสองอย่างกับคอลัมน์:
-
ป้ายกำกับ เมื่อต้องการกำหนดระดับความลับของข้อมูล
-
ชนิดข้อมูล เมื่อต้องการให้รายละเอียดเพิ่มเติมเกี่ยวกับชนิดข้อมูลที่จัดเก็บไว้ในคอลัมน์
กลไกการค้นหาอีกรูปแบบหนึ่งที่คุณสามารถใช้ในการค้นหาด้วยข้อความ ซึ่งรวมถึงการใช้เพรดิเคต CONTAINS และ FREETEXT และฟังก์ชันค่าของแถว อย่างเช่น CONTAINSTABLE และ FREETEXTTABLE สำหรับใช้งานกับคำสั่ง SELECT เมื่อใช้การค้นหาด้วยข้อความ คุณจะสามารถค้นหาคำ การผสมคำ หรือตัวแปรของคำ เช่น คำพ้องความหมายหรือรูปแบบการผันคำในตารางได้ สำหรับข้อมูลเพิ่มเติม ให้ดูการค้นหาด้วยข้อความเต็ม
ขั้นตอนที่ 2: ปกป้องข้อมูลส่วนบุคคล
GDPR มีข้อบังคับให้คุณรักษาความปลอดภัยข้อมูลส่วนบุคคลและจำกัดการเข้าถึง นอกจากขั้นตอนตามมาตรฐานที่คุณใช้จัดการการเข้าถึงเครือข่ายและแหล่งข้อมูล อย่างเช่น การตั้งค่าไฟร์วอลล์ แล้ว คุณสามารถใช้ฟีเจอร์ความปลอดภัยของ SQL Server เพื่อช่วยเหลือในการควบคุมการเข้าถึงข้อมูลได้:
-
การรับรองความถูกต้องของ SQL Server เพื่อจัดการข้อมูลประจำตัวผู้ใช้และป้องกันการเข้าถึงที่ไม่ได้รับอนุญาต
-
การรักษาความปลอดภัยระดับแถวที่จะจำกัดการเข้าถึงแถวในตารางตามความสัมพันธ์ระหว่างผู้ใช้และข้อมูลดังกล่าว
-
การมาสก์ข้อมูลแบบไดนามิกที่จะจำกัดการเผยแพร่ข้อมูลส่วนบุคคลโดยการมาสก์ไม่ให้ผู้ใช้ที่ไม่มีสิทธิ์มองเห็น
-
การเข้ารหัสลับที่ช่วยให้มั่นใจว่าข้อมูลส่วนบุคคลจะได้รับการป้องกันระหว่างการถ่ายโอนและที่เก็บข้อมูลได้รับการป้องกันจากการละเมิด ซึ่งรวมถึงทางฝั่งเซิร์ฟเวอร์
สำหรับข้อมูลเพิ่มเติม โปรดดู ความปลอดภัยของ SQL Server
ขั้นตอนที่ 3: ตอบสนองต่อคำขอได้อย่างมีประสิทธิภาพ
GDPR มีข้อบังคับให้คุณเก็บรักษาระเบียนการดำเนินการข้อมูลส่วนบุคคลไว้และเตรียมระเบียนเหล่านี้ไว้ให้พร้อมสำหรับคำขอจากหน่วยงานที่มีหน้าที่กำกับดูแล ถ้าเกิดปัญหา อย่างเช่น การเผยแพร่ข้อมูลโดยไม่ได้ตั้งใจ ตัวควบคุมการป้องกันจะช่วยให้คุณสามารถตอบสนองได้อย่างรวดเร็ว ข้อมูลต้องพร้อมใช้งานทันทีเมื่อจำเป็นต้องรายงาน ตัวอย่างเช่น GDPR มีข้อบังคับว่าต้องรายงานการรั่วไหลของข้อมูลส่วนบุคคลต่อหน่วยงานที่มีหน้าที่กำกับดูแล "ภายใน 72 ชั่วโมงหลังจากทราบปัญหา"
SQL Server 2017 จะช่วยเหลือคุณเกี่ยวกับการรายงานด้วยหลายวิธี:
-
SQL Server Audit จะช่วยให้คุณมั่นใจได้ว่าจะสามารถการเข้าถึงระเบียบฐานข้อมูลและดำเนินกิจกรรมได้ตลอดเวลา โดยจะตรวจสอบโดยละเอียด ซึ่งจะติดตามกิจกรรมฐานข้อมูลเพื่อช่วยให้คุณเข้าใจและสามารถระบุภัยคุกคามที่อาจเกิดขึ้น การละเมิดที่น่าสงสัย หรือการละเมิดด้านความปลอดภัยได้ คุณสามารถดำเนินการตรวจสอบข้อมูลได้อย่างง่ายดาย
-
ตารางชั่วคราวของ SQL Server คือตารางของผู้ใช้เวอร์ชันสำหรับระบบที่ออกแบบมาเพื่อเก็บประวัติทั้งหมดของการเปลี่ยนแปลงข้อมูล คุณสามารถใช้สิ่งเหล่านี้เพื่ออำนวยความสะดวกในการรายงานและการวิเคราะห์ในเวลาที่ต้องการได้
-
การประเมินช่องโหว่ของ SQL จะช่วยเลือกคุณในการตรวจหาปัญหาด้านความปลอดภัยและสิทธิ์ เมื่อตรวจพบปัญหา คุณจะสามารถดูรายละเอียดในรายงานการสแกนฐานข้อมูลเพื่อค้นหาวิธีการดำเนินการแก้ไข
สำหรับข้อมูลเพิ่มเติม ให้ดู สร้างแพลตฟอร์มความเชื่อถือ (E-Book) และ เส้นทางสู่การปฏิบัติตามข้อบังคับ GDPR
สร้างสแนปช็อตฐานข้อมูล
สแนปช็อตฐานข้อมูลคือมุมมองคงที่แบบอ่านอย่างเดียวของฐานข้อมูล SQL Server ของช่วงเวลาหนึ่ง แม้ว่าคุณจะสามารถคัดลอกไฟล์ฐานข้อมูล Access เพื่อสร้างสแนปช็อตฐานข้อมูลที่มีประสิทธิภาพได้ แต่ Access ไม่มีวิธีการในตัวเหมือนกับ SQL Server คุณสามารถใช้สแนปช็อตฐานข้อมูลในการเขียนรายงานตามข้อมูลในช่วงเวลาหนึ่งของการสร้างสแนปช็อตฐานข้อมูล นอกจากนี้ คุณยังสามารถใช้สแนปช็อตฐานข้อมูลในการเก็บรักษาข้อมูลประวัติ อย่างเช่น ข้อมูลของแต่ละไตรมาสบัญชีที่คุณใช้ในการรวบรวมรายงานสิ้นสุดระยะเวลา เราขอแนะนำแนวทางปฏิบัติต่อไปนี้:
-
ตั้งชื่อสแนปช็อต สแนปช็อตฐานข้อมูลจำเป็นต้องมีชื่อฐานข้อมูลที่ไม่ซ้ำกัน เพิ่มวัตถุประสงค์และกรอบเวลาให้กับชื่อเพื่อให้ค้นหาได้ง่ายยิ่งขึ้น ตัวอย่างเช่น เมื่อต้องการเก็บสแนปช็อตของฐานข้อมูล AdventureWorks สามครั้งต่อวัน ทุกๆ 6 ชั่วโมง ระหว่าง 6:00 น. ถึง 18:00 น. ตามนาฬิกา 24 ชั่วโมง ให้ตั้งชื่อว่า AdventureWorks_snapshot_0600, AdventureWorks_snapshot_1200 และ AdventureWorks_snapshot_1800
-
จำกัดจำนวนสแนปช็อต สแนปช็อตฐานข้อมูลจะยังคงอยู่จนกว่าจะถูกลบ เนื่องจากแต่ละสแนปช็อตจะมีขนาดใหญ่ขึ้นเรื่อยๆ คุณจึงอาจต้องการรักษาพื้นที่ดิสก์ไว้โดยการลบสแนปช็อตเก่าออกหลังจากสร้างสแนปช็อตใหม่ ตัวอย่างเช่น ถ้าคุณกำลังสร้างรายงานประจำวัน ให้เก็บสแนปช็อตฐานข้อมูลไว้เป็นเวลา 24 ชั่วโมง จากนั้น ให้ลบออกแล้วแทนที่ด้วยสแนปช็อตใหม่
-
เชื่อมต่อกับสแนปช็อตที่ถูกต้อง เมื่อต้องการใช้สแนปช็อต ส่วนหน้าของ Access จำเป็นต้องทราบตำแหน่งที่ตั้งที่ถูกต้อง เมื่อคุณแทนที่สแนปช็อตเก่าด้วยสแนปช็อตใหม่ คุณจะต้องเปลี่ยนเส้นทาง Access ไปยังสแนปช็อตใหม่ เพิ่มตรรกะให้กับส่วนหน้าของ Access เพื่อให้มั่นใจว่าคุณเชื่อมต่อกับสแนปช็อตฐานข้อมูลที่ถูกต้อง
ต่อไปนี้คือวิธีการสร้างสแนปช็อตฐานข้อมูล:
CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks_snapshot_0600' )
AS SNAPSHOT OF AdventureWorks;
สำหรับข้อมูลเพิ่มเติม ให้ดู สแนปช็อตฐานข้อมูล (SQL Server)
การควบคุมภาวะพร้อมกัน
เมื่อมีผู้ใช้หลายคนพยายามปรับเปลี่ยนข้อมูลในฐานข้อมูลพร้อมๆ กัน จะต้องใช้ระบบตัวควบคุมเพื่อให้การปรับเปลี่ยนของแต่ละคนไม่ส่งผลกระทบต่อการปรับเปลี่ยนของผู้อื่น วิธีนี้เรียกว่าการควบคุมภาวะพร้อมกันและมีกลยุทธ์การล็อกขั้นพื้นฐานสองแบบ ได้แก่ เชิงลบและเชิงบวก การล็อกสามารถป้องกันไม่ให้ผู้ใช้ปรับเปลี่ยนข้อมูลที่ส่งผลกระทบต่อการปรับเปลี่ยนของผู้อื่นได้ นอกจากนี้ การล็อกยังช่วยรับรองความสมบูรณ์ของฐานข้อมูล โดยเฉพาะอย่างยิ่ง คิวรีที่อาจสร้างผลลัพธ์ที่ไม่คาดคิด การปรับใช้กลยุทธ์การควบคุมภาวะพร้อมกันของ Access และ SQL Server มีความแตกต่างกันอย่างมาก
ใน Access กลยุทธ์การล็อกเริ่มต้นจะเป็นเชิงบวก และมอบสิทธิ์ความเป็นเจ้าของให้กับบุคคลแรกที่พยายามเขียนระเบียน Access จะแสดงกล่องโต้ตอบ เขียนข้อขัดแย้ง ถึงผู้ใช้คนอื่นๆ ที่พยายามเขียนระเบียนเดียวกันพร้อมๆ กัน เพื่อแก้ไขข้อขัดแย้ง ผู้ใช้คนอื่นๆ สามารถบันทึกระเบียน คัดลอกไปยังคลิปบอร์ด และลบการเปลี่ยนแปลงได้
นอกจากนี้ คุณยังสามารถใช้คุณสมบัติ RecordLocks เพื่อเปลี่ยนกลยุทธ์การควบคุมภาวะพร้อมกันได้ คุณสมบัตินี้จะส่งผลต่อฟอร์ม รายงาน และคิวรี และมีการตั้งค่าสามแบบ:
-
ไม่ได้ล็อก ในฟอร์ม ผู้ใช้สามารถพยายามแก้ไขระเบียนเดียวกันพร้อมกันได้ แต่กล่องโต้ตอบ เขียนข้อขัดแย้ง อาจปรากฏขึ้น ในรายงาน ระเบียนจะไม่ถูกล็อกในขณะที่ตรวจทานหรือพิมพ์รายงาน ในคิวรี ระเบียนจะไม่ถูกล็อกขณะที่คิวรีทำงานอยู่ นี่คือวิธีการปรับใช้การล็อกแบบเชิงบวกใน Access
-
ระเบียนทั้งหมด ระเบียนทั้งหมดในตารางหรือคิวรีย่อยถูกล็อกขณะเปิดฟอร์มในมุมมองฟอร์มหรือมุมมองแผ่นข้อมูล ขณะตรวจทานหรือพิมพ์รายงาน หรือขณะเรียกใช้คิวรี ผู้สามารถอ่านระเบียนระหว่างการล็อกได้
-
ระเบียนที่แก้ไข สำหรับฟอร์มและคิวรีเท่านั้น หน้าของระเบียนถูกล็อกทันทีที่ผู้ใช้เริ่มแก้ไขเขตข้อมูลในระเบียน และจะยังคงล็อกอยู่จนกว่าผู้ใช้จะย้ายไปยังระเบียนอื่น ดังนั้น ระเบียนสามารถแก้ไขได้โดยผู้ใช้เพียงคนเดียวในแต่ละครั้ง นี่คือวิธีการปรับใช้การล็อกแบบเชิงลบใน Access
สำหรับข้อมูลเพิ่มเติม ให้ดู กล่องโต้ตอบเขียนข้อขัดแย้ง และ คุณสมบัติ RecordLocks
ใน SQL Server การควบคุมภาวะพร้อมกันจะทำงานด้วยวิธีนี้:
-
เชิงลบ หลังจากผู้ใช้ดำเนินการที่ทำให้เกิดการล็อก ผู้อื่นจะไม่สามารถดำเนินการที่ขัดแย้งกับล็อกได้ จนกว่าเจ้าของจะปลดล็อก การควบคุมภาวะพร้อมกันนี้มักจะใช้ในสภาพแวดล้อมที่มีความขัดแย้งของข้อมูลสูง
-
เชิงบวก ในการควบคุมภาวะพร้อมกันเชิงบวก ผู้ใช้จะไม่ล็อกข้อมูลขณะกำลังอ่าน เมื่อผู้ใช้อัปเดตข้อมูล ระบบจะตรวจสอบเพื่อดูว่ามีผู้ใช้รายอื่นเปลี่ยนแปลงข้อมูลหลังจากอ่านหรือไม่ ถ้ามีผู้ใช้รายอื่นอัปเดตข้อมูล จะเกิดข้อผิดพลาด โดยทั่วไปแล้ว ผู้ใช้จะได้รับข้อผิดพลาดที่จะย้อนกลับทรานแซคชันและให้เริ่มต้นใหม่อีกครั้ง การควบคุมภาวะพร้อมกันนี้มักจะใช้ในสภาพแวดล้อมที่มีความขัดแย้งของข้อมูลต่ำ
คุณสามารถระบุชนิดการควบคุมภาวะพร้อมกันโดยการเลือกระดับการแยกทรานแซคชันต่างๆ ซึ่งจะกำหนดระดับการป้องกันทรานแซคชันจากการปรับเปลี่ยนที่ทำขึ้นโดยทรานแซคชันอื่นๆ โดยใช้คำสั่ง SET TRANSACTION:
SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SNAPSHOT
| SERIALIZABLE
}
ระดับการแยก |
คำอธิบาย |
อ่านแบบไม่ผูกมัด |
ทรานแซคชันจะถูกแยกออกเพื่อให้มั่นใจว่าข้อมูลที่เสียหายจะไม่ถูกอ่าน |
อ่านแบบผูกมัด |
ทรานแซคชันสามารถอ่านข้อมูลที่ทรานแซคชันอื่นเคยอ่านได้ โดยไม่ต้องรอให้ทรานแซคชันแรกเสร็จสมบูรณ์ |
อ่านซ้ำได้ |
ล็อกการอ่านและเขียนในข้อมูลที่เลือก จนกว่าจะสิ้นสุดทรานแซคชัน แต่อาจเกิดการอ่านที่ไม่สามารถตรวจพบได้ |
สแนปช็อต |
ใช้เวอร์ชันแถวเพื่อให้ได้รับความสอดคล้องของการอ่านระดับทรานแซคชัน |
เรียงลำดับได้ |
ทรานแซคชันแต่ละรายการจะแยกออกจากกันอย่างสิ้นเชิง |
สำหรับข้อมูลเพิ่มเติม ให้ดู คู่มือการล็อกทรานแซคชันและการกำหนดเวอร์ชันแถว
ปรับปรุงประสิทธิภาพของคิวรี
เมื่อคุณมีคิวรีที่สามารถทำงานผ่าน Access ได้ ให้ใช้ประโยชน์จาก SQL Server ซึ่งสามารถทำให้คิวรีมีประสิทธิภาพมากยิ่งขึ้น
ไม่เหมือนกับฐานข้อมูล Access SQL Server มีคิวรีคู่ขนานที่สามารถปรับการดำเนินการคิวรีและดัชนีสำหรับคอมพิวเตอร์ที่มีหน่วยประมวลผล (CPU) มากกว่าหนึ่งตัว เนื่องจาก SQL Server สามารถดำเนินการคิวรีหรือดัชนีควบคู่กันโดยใช้เธรดผู้ปฏิบัติการระบบหลายเธรดได้ การดำเนินการจึงรวดเร็วและมีประสิทธิภาพมากยิ่งขึ้น
คิวรีเป็นส่วนประกอบสำคัญของการปรับปรุงประสิทธิภาพโดยรวมของโซลูชันฐานข้อมูล คิวรีที่ไม่ดีจะทำงานอย่างไม่มีกำหนด เกิดปัญหาหมดเวลา และใช้ทรัพยากร อย่างเช่น CPU หน่วยความจำ และเครือข่ายอย่างสิ้นเปลือง ซึ่งจะขัดขวางความพร้อมใช้งานของข้อมูลทางธุรกิจที่สำคัญ คิวรีที่ไม่ดีเพียงหนึ่งคิวรีอาจก่อให้เกิดปัญหาในฐานข้อมูลได้อย่างใหญ่หลวง
สำหรับข้อมูลเพิ่มเติม ให้ดู การใช้คิวรีที่รวดเร็วยิ่งขึ้นด้วย SQL Server (E-Book)
การปรับคิวรีให้เหมาะสม
มีเครื่องมือหลายตัวที่สามารถทำงานร่วมกันเพื่อช่วยให้คุณวิเคราะห์และปรับปรุงประสิทธิภาพของคิวรีได้ ดังนี้: ตัวปรับคิวรีให้เหมาะสม แผนปฏิบัติการ และ Query Store
ตัวปรับคิวรีให้เหมาะสม
ตัวปรับคิวรีให้เหมาะสม คือหนึ่งในส่วนประกอบที่สำคัญที่สุดของ SQL Server ใช้ตัวปรับคิวรีให้เหมาะสม ในการวิเคราะห์คิวรีและกำหนดวิธีการเข้าถึงข้อมูลที่จำเป็นให้มีประสิทธิภาพสูงสุด ข้อมูลที่ป้อนลงในตัวปรับคิวรีให้เหมาะสม ประกอบด้วยคิวรี ชุดรูปแบบฐานข้อมูล (คำจำกัดความตารางและดัชนี) และสถิติฐานข้อมูล ข้อมูลที่ส่งจากตัวปรับคิวรีให้เหมาะสม คือแผนปฏิบัติการ
สำหรับข้อมูลเพิ่มเติม ให้ดู ตัวปรับคิวรีให้เหมาะสมของ SQL Server
แผนปฏิบัติการ
แผนปฏิบัติการคือคำจำกัดความที่เรียงลำดับตารางแหล่งข้อมูลเพื่อเข้าถึงและเป็นวิธีที่ใช้ในการแยกข้อมูลจากแต่ละตาราง การปรับให้เหมาะสมคือขั้นตอนการเลือกแผนปฏิบัติการจากแผนที่สามารถใช้ได้จำนวนมาก แผนปฏิบัติการที่สามารถใช้ได้แต่ละแผนจะใช้ทรัพยากรในการคำนวณและตัวปรับคิวรีให้เหมาะสมจะเลือกแผนที่ใช้ทรัพยากรน้อยที่สุด
SQL Server ยังต้องเปลี่ยนแปลงเงื่อนไขในฐานข้อมูลแบบไดนามิกอีกด้วย การถดถอยในแผนปฏิบัติการคิวรีอาจส่งผลต่อประสิทธิภาพการทำงานอย่างมาก การเปลี่ยนแปลงบางอย่างในฐานข้อมูลอาจทำให้แผนปฏิบัติการไม่มีประสิทธิภาพหรือไม่ถูกต้อง โดยขึ้นอยู่กับสถานะใหม่ของฐานข้อมูล SQL Server จะตรวจหาการเปลี่ยนที่ทำให้แผนปฏิบัติการไม่ถูกต้องและทำเครื่องหมายแผนเป็นไม่ถูกต้อง
จากนั้น จะต้องใช้แผนใหม่สำหรับการเชื่อมต่อครั้งถัดไปที่ดำเนินการคิวรี เงื่อนไขที่ทำให้แผนไม่ถูกต้อง ได้แก่:
-
การเปลี่ยนแปลงที่ทำขึ้นกับตารางหรือมุมมองที่คิวรีใช้อ้างอิง (ALTER TABLE และ ALTER VIEW)
-
การเปลี่ยนแปลงที่ทำขึ้นกับคิวรีที่แผนปฏิบัติการใช้งาน
-
การอัปเดตสถิติโดยใช้แผนปฏิบัติการ ซึ่งสร้างขึ้นจากคำสั่ง อย่างเช่น UPDATE STATISTICS หรือสร้างขึ้นโดยอัตโนมัติ
สำหรับข้อมูลเพิ่มเติม โปรดดู แผนปฏิบัติการ
Query Store
Query Store จะแสดงข้อมูลเชิงลึกเกี่ยวกับตัวเลือกและประสิทธิภาพของแผนปฏิบัติการ ซึ่งทำให้สามารถแก้ไขปัญหาด้านประสิทธิภาพได้ง่ายขึ้น โดยการช่วยให้คุณค้นหาความแตกต่างด้านประสิทธิภาพที่เกิดจากการเปลี่ยนแปลงแผนปฏิบัติการได้อย่างรวดเร็ว Query Store จะรวบรวมข้อมูลการรับส่ง เช่น ประวัติของคิวรี แผน และสถิติเวลาการทำงาน และสถิติการรอ ใช้คำสั่ง ALTER DATABASE เพื่อเริ่มใช้งาน Query Store:
ALTER DATABASE AdventureWorks2012 SET QUERY_STORE = ON;
สำหรับข้อมูลเพิ่มเติม ให้ดู การตรวจสอบประสิทธิภาพโดยใช้ Query Store
การแก้ไขแผนโดยอัตโนมัติ
ในบางครั้ง วิธีที่ง่ายที่สุดในการปรับปรุงประสิทธิภาพของคิวรีก็คือการแก้ไขแผนโดยอัตโนมัติ ซึ่งเป็นฟีเจอร์ในฐานข้อมูล Azure SQL คุณเพียงแค่เปิดและปล่อยให้ระบบทำงาน โดยระบบจะตรวจสอบและวิเคราะห์แผนปฏิบัติการ ตรวจสอบแผนปฏิบัติการที่มีปัญหาอย่างต่อเนื่อง และแก้ไขปัญหาด้านประสิทธิภาพโดยอัตโนมัติ ในเบื้องหลัง การแก้ไขแผนโดยอัตโนมัติจะใช้กลยุทธ์สี่ขั้นตอน ได้แก่ เรียนรู้ ปรับใช้ ตรวจสอบ และทำซ้ำ
สำหรับข้อมูลเพิ่มเติม ให้ดู การปรับอัตโนมัติ
การดำเนินการคิวรีแบบปรับได้
คุณยังสามารถดำเนินการคิวรีได้รวดเร็วยิ่งขึ้นด้วยการอัปเกรดไปใช้ SQL Server 2017 ซึ่งมีฟีเจอร์ใหม่ที่ชื่อว่าการดำเนินการคิวรีแบบปรับได้ SQL Server จะปรับตัวเลือกแผนคิวรีตามคุณลักษณะของเวลาการทำงาน
การประมาณคาร์ดินาลลิตี้จะประมาณจำนวนแถวในแต่ละขั้นตอนของแผนปฏิบัติการ การประมาณที่ไม่ถูกต้องอาจทำให้คิวรีตอบสนองช้า ใช้ทรัพยากรอย่างสิ้นเปลือง (หน่วยความจำ, CPU และ IO) และลดอัตราความเร็วและภาวะพร้อมกันได้ มีเทคนิคสามอย่างที่สามารถปรับใช้คุณลักษณะปริมาณงานของแอปพลิเคชันได้ ดังนี้:
-
ผลป้อนกลับการให้หน่วยความจำในโหมดชุด การประมาณคาร์ดินาลลิตี้ที่ไม่ดีอาจทำให้คิวรี "ล้น" หรือใช่หน่วยความจำมากจนเกินไป SQL Server 2017 จะปรับการให้หน่วยความจำตามผลป้อนกลับในการดำเนินการ ลบคิวรีที่ล้น และปรับภาวะพร้อมกันสำหรับคิวรีที่ทำซ้ำ
-
การเข้าร่วมแบบปรับได้ในโหมดชุด การเข้าร่วมแบบปรับได้จะเลือกชนิดการเข้าร่วมภายใน (การเข้าร่วมวนรอบแบบซ้อนกัน การเข้าร่วมแบบผสาน หรือการเข้าร่วมแบบแฮช) ระหว่างเวลาการทำงาน โดยขึ้นอยู่กับแถวข้อมูลจริงที่ป้อน จากนั้น แผนจะสามารถสลับไปใช้กลยุทธ์การเข้าร่วมที่ดียิ่งขึ้นระหว่างการดำเนินการได้
-
การดำเนินการแทรก การดำเนินการคิวรีจะถือว่าฟังก์ชันค่าในตารางหลายคำสั่งเป็นกล่องดำ SQL Server 2017 สามารถประมาณจำนวนแถวเพื่อปรับปรุงการดำเนินการได้ดีกว่า
คุณสามารถทำให้ปริมาณงานสามารถดำเนินการคิวรีแบบปรับได้โดยอัตโนมัติ โดยการเปิดใช้งานระดับความเข้ากันสำหรับฐานข้อมูลที่ระดับ 140:
ALTER DATABASE [YourDatabaseName] SET COMPATIBILITY_LEVEL = 140;
สำหรับข้อมูลเพิ่มเติม ให้ดู การดำเนินการคิวรีอัจฉริยะในฐานข้อมูล SQL
วิธีการใช้คิวรี
ใน SQL Server มีหลายวิธีในการใช้คิวรี และแต่ละวิธีก็มีข้อดีเฉพาะตัว คุณต้องทราบเกี่ยวกับแต่ละวิธี เพื่อให้คุณสามารถเลือกวิธีที่เหมาะสมกับโซลูชัน Access ของคุณได้ วิธีที่ดีที่สุดในการสร้างคิวรี TSQL คือการแก้ไขและทดสอบโดยใช้ SQL Server Management Studio (SSMS) ตัวแก้ไข Transact-SQL ซึ่งมีความอัจฉริยะและสามารถช่วยคุณเลือกคำสำคัญที่เหมาะสมและตรวจสอบข้อผิดพลาดทางไวยากรณ์ได้
มุมมอง
ใน SQL Server มุมมองจะเหมือนกับตารางเสมือนที่มีข้อมูลที่มาจากตารางอย่างน้อยหนึ่งตารางหรือมุมมองอื่นๆ แต่จะอ้างอิงมุมมองเหมือนกับตารางในคิวรี มุมมองสามารถซ่อนความซับซ้อนของคิวรีและช่วยป้องกันข้อมูลด้วยการจำกัดแถวและคอลัมน์ได้ ต่อไปนี้คือตัวอย่างของมุมมองง่ายๆ:
CREATE VIEW HumanResources.EmployeeHireDate AS
SELECT p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID;
เพื่อให้ได้ประสิทธิภาพสูงสุดและเมื่อต้องการแก้ไขผลลัพธ์ของมุมมอง ให้สร้างมุมมองที่มีการทำดัชนี ซึ่งอยู่ในฐานข้อมูล อย่างเช่น ตารางจัดสรรที่เก็บข้อมูล และใช้คิวรีเหมือนกับตาราง เมื่อต้องการใช้งานใน Access ให้เชื่อมโยงมุมมองด้วยวิธีเดียวกับที่คุณเชื่อมโยงตาราง ต่อไปนี้คือตัวอย่างของมุมมองที่มีการทำดัชนี:
CREATE VIEW Sales.vOrders
WITH SCHEMABINDING
AS
SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Revenue,
OrderDate, ProductID, COUNT_BIG(*) AS COUNT
FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o
WHERE od.SalesOrderID = o.SalesOrderID
GROUP BY OrderDate, ProductID;
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON Sales.vOrders (OrderDate, ProductID);
แต่อาจมีข้อจำกัด คุณจะไม่สามารถอัปเดตข้อมูลได้ ถ้ามีตารางฐานมากกว่าหนึ่งตารางได้รับผลกระทบหรือมุมมองมีฟังก์ชันการรวมหรือคำสั่ง DISTINCT ถ้า SQL Server ส่งกลับข้อความแสดงข้อผิดพลาดที่ระบุว่า ไม่ทราบระเบียนที่จะลบ คุณอาจต้องเพิ่มทริกเกอร์การลบในมุมมองดังกล่าว สุดท้าย คุณจะไม่สามารถใช้คำสั่ง ORDER BY เหมือนกับที่คุณใช้กับคิวรี Access ได้
สำหรับข้อมูลเพิ่มเติม ให้ดู มุมมอง และ สร้างมุมมองที่มีการทำดัชนี
กระบวนการที่จัดเก็บไว้
กระบวนการที่จัดเก็บไว้คือกลุ่มของคำสั่ง TSQL อย่างน้อยหนึ่งคำสั่งที่รับพารามิเตอร์ขาเข้า ส่งกลับพารามิเตอร์ขาออก และระบุความสำเร็จหรือความล้มเหลวด้วยค่าสถานะ โดยจะทำหน้าที่เป็นชั้นคั่นกลางระหว่างส่วนหน้าของ Access และส่วนหลังของ SQL Server กระบวนการที่จัดเก็บไว้อาจเป็นคำสั่งง่ายๆ เช่น คำสั่ง SELECT หรือมีความซับซ้อนเหมือนกับโปรแกรมก็ได้ มีตัวอย่างดังนี้:
CREATE PROCEDURE HumanResources.uspGetEmployees
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
SET NOCOUNT ON;
SELECT FirstName, LastName, Department
FROM HumanResources.vEmployeeDepartmentHistory
WHERE FirstName = @FirstName AND LastName = @LastName
AND EndDate IS NULL;
เมื่อคุณใช้กระบวนการที่จัดเก็บไว้ใน Access กระบวนการมักจะส่งกลับผลลัพธ์ที่ทำให้ฟอร์มหรือรายงานถดถอย แต่อาจมีการดำเนินการอื่นๆ ที่ไม่ส่งกลับผลลัพธ์ เช่น คำสั่ง DDL หรือ DML เมื่อคุณใช้คิวรีแบบส่งผ่าน ให้ตรวจสอบให้แน่ใจว่าคุณตั้งค่าคุณสมบัติ Returns Records อย่างเหมาะสม
สำหรับข้อมูลเพิ่มเติม ให้ดู กระบวนการที่จัดเก็บไว้
นิพจน์ตารางทั่วไป
นิพจน์ตารางทั่วไป (CTE) เหมือนกับตารางชั่วคราวที่สร้างชุดผลลัพธ์ที่มีชื่อ ซึ่งจะมีอยู่ในการดำเนินการคิวรีเดียวหรือคำสั่ง DML เท่านั้น CTE จะอยู่ในบรรทัดโค้ดเดียวกับคำสั่ง SELECT หรือคำสั่ง DML ที่ใช้งาน ซึ่งการสร้างและการใช้ตารางหรือมุมมองชั่วคราวมักจะเป็นกระบวนการสองขั้นตอน มีตัวอย่างดังนี้:
-- Define the CTE expression name and column list.
WITH Sales_CTE (SalesPersonID, SalesOrderID, SalesYear)
AS
-- Define the CTE query.
(
SELECT SalesPersonID, SalesOrderID, YEAR(OrderDate) AS SalesYear
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL
)
-- Define the outer query referencing the CTE name.
SELECT SalesPersonID, COUNT(SalesOrderID) AS TotalSales, SalesYear
FROM Sales_CTE
GROUP BY SalesYear, SalesPersonID
ORDER BY SalesPersonID, SalesYear;
CTE มีข้อดีมากมายดังต่อไปนี้:
-
เนื่องจาก CTE เป็นการทำงานชั่วคราว คุณจึงไม่ต้องสร้างเป็นวัตถุฐานข้อมูลถาวรเหมือนกับมุมมอง
-
คุณสามารถอ้างอิง CTE เดียวกันได้หลายครั้งในคิวรีหรือคำสั่ง DML ทำให้สามารถจัดการโค้ดของคุณได้มากยิ่งขึ้น
-
คุณสามารถใช้คิวรีที่อ้างอิง CTE เพื่อกำหนดเคอร์เซอร์ได้
สำหรับข้อมูลเพิ่มเติม ให้ดู WITH common_table_expression
ฟังก์ชันที่ผู้ใช้กำหนดเอง
ฟังก์ชันที่ผู้ใช้กำหนดเอง (UDF) สามารถดำเนินการคิวรีและการคำนวณ และส่งกลับค่าสเกลาร์และชุดผลลัพธ์ข้อมูลได้ โดยจะมีลักษณะเหมือนกับฟังก์ชันในภาษาเขียนโปรแกรมที่ยอมรับพารามิเตอร์ ดำเนินการ เช่น การคำนวณที่ซับซ้อน และส่งกลับผลลัพธ์ของการดำเนินการดังกล่าวเป็นค่า มีตัวอย่างดังนี้:
CREATE FUNCTION dbo.ISOweek (@DATE datetime)
RETURNS int WITH SCHEMABINDING -- Helps improve performance
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @ISOweek int;
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104');
-- Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1;
-- Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1;
RETURN(@ISOweek);
END;
GO
SET DATEFIRST 1;
SELECT dbo.ISOweek(CONVERT(DATETIME,'12/26/2004',101)) AS 'ISO Week';
UDF มีข้อจำกัดบางอย่าง ตัวอย่างเช่น จะไม่สามารถใช้ฟังก์ชันระบบที่ไม่กำหนดไว้บางอย่าง ไม่สามารถดำเนินการคำสั่ง DML หรือ DDL หรือดำเนินการคิวรี SQL แบบไดนามิกได้
สำหรับข้อมูลเพิ่มเติม ให้ดู ฟังก์ชันที่ผู้ใช้กำหนดเอง
เพิ่มคีย์และดัชนี
ไม่ว่าคุณจะใช้ระบบฐานข้อมูลใดก็ตาม ก็ต้องใช้คีย์และดัชนีควบคู่กัน
คีย์
ใน SQL Server ให้ตรวจสอบให้แน่ใจว่าคุณสร้างคีย์หลักสำหรับแต่ละตารางและคีย์ภายนอกสำหรับตารางที่เกี่ยวข้อง ฟีเจอร์ใน SQL Server ที่เทียบเท่ากับชนิดข้อมูล AutoNumber ของ Access ก็คือคุณสมบัติ IDENTITY ที่สามารถใช้ในการสร้างค่าคีย์ได้ เมื่อคุณใช้คุณสมบัตินี้กับคอลัมน์ตัวเลข จะกลายเป็นแบบอ่านอย่างเดียวและจะถูกเก็บรักษาโดยระบบฐานข้อมูล เมื่อคุณแทรกระเบียนลงในตารางที่มีคอลัมน์ IDENTITY ระบบจะเพิ่มค่าสำหรับคอลัมน์ IDENTITY ขึ้นอีก 1 โดยเริ่มต้นจาก 1 โดยอัตโนมัติ แต่คุณสามารถควบคุมค่าเหล่านี้ได้ด้วยอาร์กิวเมนต์
สำหรับข้อมูลเพิ่มเติม ให้ดู CREATE TABLE, IDENTITY (คุณสมบัติ)
ดัชนี
เช่นเคย การเลือกดัชนีคือการสร้างสมดุลระหว่างความเร็วของคิวรีและต้นทุนการอัปเดต ใน Access คุณจะมีดัชนีเพียงชนิดเดียว แต่ใน SQL Server คุณมีดัชนีถึงสิบสองชนิด โชคดีที่คุณสามารถใช้ตัวปรับคิวรีให้เหมาะสม เพื่อช่วยเหลือในการเลือกดัชนีที่มีประสิทธิภาพที่สุด และใน Azure SQL คุณสามารถใช้การจัดการดัชนีอัตโนมัติ ซึ่งเป็นฟีเจอร์การปรับอัตโนมัติ ที่จะแนะนำการเพิ่มและการลบดัชนีสำหรับคุณ ไม่เหมือนกับ Access คุณต้องสร้างดัชนีสำหรับคีย์ภายนอกใน SQL Server ของคุณเอง คุณสามารถสร้างดัชนีในมุมมองที่มีการทำดัชนีเพื่อปรับปรุงประสิทธิภาพของคิวรีได้อีกด้วย ข้อเสียของมุมมองที่มีการทำดัชนีคือต้นทุนที่เพิ่มมากขึ้น เมื่อคุณปรับเปลี่ยนข้อมูลในตารางฐานของมุมมอง เนื่องจากจะต้องอัปเดตมุมมองเช่นกัน สำหรับข้อมูลเพิ่มเติม ให้ดู คู่มือสถาปัตยกรรมและการออกแบบดัชนีของ SQL Server และ ดัชนี
ดำเนินการทรานแซคชัน
การดำเนินการ Online Transaction Process (OLTP) เป็นเรื่องยากลำบากเมื่อใช้ Access แต่กลับง่ายดายเมื่อใช้ SQL Server ทรานแซคชันคือหน่วยการทำงานหนึ่งหน่วยที่จะเปลี่ยนแปลงข้อมูลทั้งหมดเมื่อสำเร็จ แต่จะย้อนกลับการเปลี่ยนแปลงเมื่อไม่สำเร็จ ทรานแซคชันต้องมีคุณสมบัติ 4 อย่าง ซึ่งมักจะเรียกว่า ACID:
-
เป็นอันหนึ่งอันเดียวกัน ทรานแซคชันต้องเป็นหน่วยการทำงานที่เป็นหนึ่งเดียวกัน ไม่ว่าจะดำเนินการปรับเปลี่ยนข้อมูลทั้งหมด หรือไม่ดำเนินการใดๆ เลย
-
สอดคล้องกัน เมื่อเสร็จสมบูรณ์ ทรานแซคชันต้องทำให้ข้อมูลทั้งหมดมีสถานะสอดคล้องกัน ซึ่งหมายความว่าต้องทำตามกฎความสมบูรณ์ของข้อมูลทั้งหมด
-
การแยก การเปลี่ยนแปลงที่ทำขึ้นโดยทรานแซคชันที่เกิดขึ้นพร้อมกันจะถูกแยกออกจากทรานแซคชันปัจจุบัน
-
ความทนทาน หลังจากทรานแซคชันเสร็จสมบูรณ์ การเปลี่ยนแปลงจะอยู่อย่างถาวร แม้ว่าระบบจะทำงานผิดพลาดก็ตาม
คุณสามารถใช้ทรานแซคชันเพื่อรับรองความสมบูรณ์ของข้อมูล เช่น การถอดเงินสดจาก ATM หรือการฝากเงินอัตโนมัติผ่านเช็ค คุณสามารถใช้ทรานแซคชันที่ชัดเจน บอกเป็นนัย หรือมีขอบเขตเป็นชุด ต่อไปนี้คือตัวอย่าง TSQL สองตัวอย่าง:
-- Using an explicit transaction
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
-- the ROLLBACK statement rolls back the INSERT statement, but the created table still exists.
CREATE TABLE ValueTable (id int);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
สำหรับข้อมูลเพิ่มเติม ให้ดู ทรานแซคชัน
การใช้ข้อจำกัดและทริกเกอร์
ฐานข้อมูลทั้งหมดมีวิธีการรักษาความสมบูรณ์ของข้อมูล
ข้อบังคับ
ใน Access คุณสามารถบังคับใช้ความสมบูรณ์การอ้างอิงในความสัมพันธ์ตารางผ่านการจับคู่คีย์ภายนอกและคีย์หลัก ซึ่งจะเรียงลำดับการอัปเดตและการลบ และกฎการตรวจสอบความถูกต้อง สำหรับข้อมูลเพิ่มเติม ให้ดู คู่มือแนะนำความสัมพันธ์ตาราง และ จำกัดการป้อนข้อมูลโดยใช้กฎการตรวจสอบความถูกต้อง
ใน SQL Server คุณสามารถใช้ข้อจำกัด UNIQUE และ CHECK ซึ่งเป็นวัตถุฐานข้อมูลที่บังคับใช้ความสมบูรณ์ของข้อมูลในตารางของ SQL Server เมื่อต้องการตรวจสอบว่าค่าในตารางอื่นๆ ถูกต้อง ให้ใช้ข้อจำกัดของคีย์ภายนอก เมื่อต้องการตรวจสอบว่าค่าอยู่ภายในระยะหนึ่ง ให้ใช้ข้อจำกัดการตรวจสอบ วัตถุเหล่านี้เป็นการป้องกันชั้นแรกของคุณและได้รับการออกแบบมาให้ทำงานได้อย่างมีประสิทธิภาพ สำหรับข้อมูลเพิ่มเติม ให้ดู ข้อจำกัดเฉพาะและข้อจำกัดการตรวจสอบ
ทริกเกอร์
Access ไม่มีทริกเกอร์ฐานข้อมูล ใน SQL Server คุณสามารถใช้ทริกเกอร์เพื่อบังคับใช้กฎความสมบูรณ์ของข้อมูลที่ซับซ้อนและเพื่อเรียกใช้ตรรกะทางธุรกิจบนเซิร์ฟเวอร์ ทริกเกอร์ฐานข้อมูลคือกระบวนการที่จัดเก็บไว้ที่ทำงานเมื่อมีการดำเนินการบางอย่างภายในฐานข้อมูล ทริกเกอร์คือเหตุการณ์ เช่น การเพิ่มหรือการลบระเบียนในตาราง ที่จะดำเนินการกระบวนการที่จัดเก็บไว้ แม้ว่าฐานข้อมูล Access จะสามารถรับรองความสมบูรณ์การอ้างอิงเมื่อผู้ใช้พยายามอัปเดตหรือลบข้อมูล แต่ SQL Server มีชุดทริกเกอร์ที่มีประสิทธิภาพมากกว่า ตัวอย่างเช่น คุณสามารถตั้งโปรแกรมให้ทริกเกอร์ลบระเบียนเป็นกลุ่มและรับรองความสมบูรณ์ของข้อมูล อีกทั้งคุณยังสามารถเพิ่มทริกเกอร์ลงในตารางและมุมมองได้อีกด้วย
สำหรับข้อมูลเพิ่มเติม ให้ดู ทริกเกอร์ - DMLทริกเกอร์ - DDL และ การออกแบบทริกเกอร์ T-SQL
ใช้คอลัมน์จากการคำนวณ
ใน Access คุณสามารถสร้างคอลัมน์จากการคำนวณได้โดยการเพิ่มลงในคิวรีและการสร้างนิพจน์ ตัวอย่างเช่น:
Extended Price: [Quantity] * [Unit Price]
ใน SQL Server ฟีเจอร์ที่เทียบเท่ากันจะเรียกว่าคอลัมน์จากการคำนวณด้วยคอมพิวเตอร์ ซึ่งเป็นคอลัมน์เสมือนที่จะไม่จัดเก็บอยู่ในตาราง เว้นแต่ว่าจะทำเครื่องหมายคอลัมน์เป็น PERSISTED เหมือนกับคอลัมน์จากการคำนวณ คอลัมน์จากการคำนวณด้วยคอมพิวเตอร์จะใช้ข้อมูลจากคอลัมน์อื่นๆ ในนิพจน์ เมื่อต้องการสร้างคอลัมน์จากการคำนวณ ให้เพิ่มลงในตาราง ตัวอย่างเช่น:
CREATE TABLE dbo.Products
(
ProductID int IDENTITY (1,1) NOT NULL
, QtyAvailable smallint
, UnitPrice money
, InventoryValue AS QtyAvailable * UnitPrice
);
สำหรับข้อมูลเพิ่มเติม ให้ดู ระบุคอลัมน์จากการคำนวณด้วยคอมพิวเตอร์ในตาราง
ประทับเวลาข้อมูลของคุณ
ในบางครั้ง คุณอาจสร้างเขตข้อมูลตารางเพื่อบันทึกประทับเวลาเมื่อสร้างระเบียน เพื่อให้คุณสามารถบันทึกรายการข้อมูลได้ ใน Access คุณสามารถสร้างคอลัมน์วันที่ด้วยค่าเริ่มต้น =Now() เมื่อต้องการบันทึกวันที่หรือเวลาใน SQL Server ให้ใช้ชนิดข้อมูล datetime2 กับค่าเริ่มต้น SYSDATETIME()
หมายเหตุ หลีกเลี่ยงความสับสนระหว่าง rowversion ด้วยการเพิ่มประทับเวลาให้กับข้อมูลของคุณ คำสำคัญ timestamp คือคำพ้องความหมายของ rowversion ใน SQL Server แต่คุณควรใช้คำสำคัญ rowversion ใน SQL Server rowversion คือชนิดข้อมูลที่สร้างขึ้นโดยอัตโนมัติ หมายเลขไบนารีที่ไม่ซ้ำกันภายในฐานข้อมูล และโดยทั่วไป จะใช้เป็นกลไกสำหรับแถวตารางการประทับเวอร์ชัน แต่ชนิดข้อมูล rowversion เป็นเพียงจำนวนที่เพิ่มขึ้น และไม่ใช่วันที่หรือเวลา และไม่ได้รับการออกแบบมาสำหรับการประทับเวลาแถว
สำหรับข้อมูลเพิ่มเติม โปรดดู rowversion สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ rowversion เพื่อลดข้อขัดแย้งของระเบียน ให้ดู โยกย้ายฐานข้อมูล Access ไปยัง SQL Server
จัดการวัตถุขนาดใหญ่
ใน Access คุณสามารถจัดการข้อมูลที่ไม่เป็นโครงสร้าง เช่น ไฟล์ รูปภาพ และภาพถ่ายได้โดยใช้ชนิดข้อมูลสิ่งที่แนบมา ในคำศัพท์ของ SQL Server ข้อมูลที่ไม่เป็นโครงสร้างจะเรียกว่า Blob (Binary Large Object) และมีวิธีการจัดการอยู่หลายวิธี:
FILESTREAM ใช้ชนิดข้อมูล varbinary(max) ในการจัดเก็บข้อมูลที่ไม่เป็นโครงสร้างในระบบไฟล์ แทนที่จะเก็บในฐานข้อมูล สำหรับข้อมูลเพิ่มเติม ให้ดู เข้าถึงข้อมูล FILESTREAM ด้วย Transact-SQL
FileTable จัดเก็บ Blob ไว้ในตารางพิเศษที่ชื่อว่า FileTable และตั้งค่าให้สามารถเข้ากับแอปพลิเคชัน Windows ได้ เหมือนกับจัดเก็บไว้ในระบบไฟล์โดยไม่ต้องการเปลี่ยนแปลงแอปพลิเคชันไคลเอ็นต์ของคุณ FileTable จำเป็นต้องใช้ FILESTREAM สำหรับข้อมูลเพิ่มเติม โปรดดู FileTables
จัดเก็บ BLOB ระยะไกล (RBS) จัดเก็บวัตถุขนาดใหญ่แบบไบนารี (BLOB) ในโซลูชันที่เก็บข้อมูลการซื้อขาย แทนที่จะเก็บไว้ในเซิร์ฟเวอร์โดยตรง วิธีนี้จะช่วยประหยัดเนื้อที่และลดการใช้ทรัพยากรฮาร์ดแวร์ สำหรับข้อมูลเพิ่มเติม ให้ดู ข้อมูลวัตถุขนาดใหญ่แบบไบนารี (Blob)
ทำงานกับข้อมูลแบบลำดับชั้น
แม้ว่าฐานข้อมูลเชิงสัมพันธ์ เช่น Access จะมีความยืดหยุ่นสูง แต่อาจไม่สามารถทำงานกับความสัมพันธ์ที่เป็นลำดับชั้นได้ และมักจะจำเป็นต้องใช้คำสั่ง SQL หรือโค้ดที่ซับซ้อน ตัวอย่างของข้อมูลที่เป็นลำดับชั้น ได้แก่: แผนผังองค์กร ระบบไฟล์ การจัดหมวดหมู่คำศัพท์ และกราฟของลิงก์ระหว่างเว็บเพจ SQL Server มีชนิดข้อมูล hierarchyid ในตัวและชุดฟังก์ชันลำดับชั้นเพื่อให้สามารถจัดเก็บ ใช้คิวรี และจัดการข้อมูลที่เป็นลำดับชั้นได้อย่างง่ายดาย
สำหรับข้อมูลเพิ่มเติม ให้ดู ข้อมูลที่เป็นลำดับชั้นa และ บทช่วยสอน: การใช้ชนิดข้อมูล hierarchyid
จัดการข้อความ JSON
JavaScript Object Notation (JSON) คือบริการบนเว็บที่ใช้ข้อความที่มนุษย์สามารถอ่านได้เป็นคู่แอตทริบิวต์และค่าในการติดต่อสื่อสารระหว่างเบราว์เซอร์และเซิร์ฟเวอร์แบบอะซิงโครนัส ตัวอย่างเช่น:
{
"firstName": "Mary",
"lastName": "Contrary",
"spouse": null,
"age": 27
}
Access ไม่มีวิธีการในตัวเพื่อจัดการข้อมูล JSON แต่ใน SQL Server คุณสามารถจัดเก็บ ทำดัชนี ใช้คิวรี และแยกข้อมูล JSON ได้อย่างราบรื่น คุณสามารถแปลงและจัดเก็บข้อมูล JSON ในตารางหรือจัดรูปแบบตารางเป็นข้อความ JSON ได้ ตัวอย่างเช่น คุณอาจต้องการจัดรูปแบบผลลัพธ์คิวรีเป็น JSON หรือแอปบนเว็บ หรือเพิ่มโครงสร้างข้อมูล JSON ลงในแถวหรือคอลัมน์
หมายเหตุ JSON ไม่ได้รับการสนับสนุนใน VBA หรืออีกทางหนึ่ง คุณสามารถใช้ XML ใน VBA โดยใช้ไลบรารี MSXML ได้
สำหรับข้อมูลเพิ่มเติม ให้ดู ข้อมูล JSON ใน SQL Server
แหล่งข้อมูล
ขณะนี้เป็นช่วงเวลาที่ดีในการเรียนรู้เพิ่มเติมเกี่ยวกับ SQL Server และ Transact SQL (TSQL) ตามที่คุณเห็น มีฟีเจอร์มากมายเหมือนกับ Access แต่ก็มีความสามารถที่ Access ไม่มี ต่อไปนี้คือแหล่งข้อมูลการเรียนรู้ที่จะช่วยยกระดับการเดินทางของคุณสู่ระดับถัดไป:
แหล่งข้อมูล |
คำอธิบาย |
หลักสูตรที่ใช้วิดีโอ |
|
บทช่วยสอนเกี่ยวกับ SQL Server 2017 |
|
การเรียนรู้สำหรับ Azure แบบใช้เครื่อง |
|
กลายเป็นผู้เชี่ยวชาญ |
|
เพจเริ่มต้นหลัก |
|
ข้อมูลวิธีใช้ |
|
ข้อมูลวิธีใช้ |
|
ภาพรวมของระบบคลาวด์ |
|
สรุปภาพของฟีเจอร์ใหม่ ๆ |
|
สรุปฟีเจอร์ตามเวอร์ชัน |
|
ดาวน์โหลด SQL Server Express 2017 |
|
ดาวน์โหลดฐานข้อมูลตัวอย่าง |