การปรับปรุง
ในการใช้งานโพรโทคอล SQL Server Virtual Backup Device Interface (VDI) ปัจจุบัน ข้อความล่าสุดที่ส่งจาก SQL Server ไปยังไคลเอ็นต์ VDI จะเป็นคําสั่ง VDC_Flush เพื่อป้องกันการสูญหายของข้อมูล ไคลเอนต์ VDI ต้องเสร็จสิ้นการสํารองข้อมูลก่อนที่จะตอบสนองต่อคําสั่ง VDC_Flush
เริ่มต้นด้วย SQL Server 2008 และบทนําของ FILESTREAM คําสั่ง VDC_Flush สามารถส่งได้หลายครั้งระหว่างการสํารองข้อมูล การดําเนินการนี้ทําให้เกิดปัญหาที่ไคลเอ็นต์ VDI ต้องเสร็จสิ้นการสํารองข้อมูลหลายครั้งในระหว่างการดําเนินการสํารองข้อมูล ซึ่งไม่สามารถทําได้สําหรับบางไคลเอ็นต์ VDI นอกจากนี้ ถ้าไคลเอ็นต์ VDI ตอบสนองต่อคําสั่ง VDC_Flush โดยไม่ตรวจสอบให้แน่ใจว่าการสํารองข้อมูลจะเข้มงวดเมื่อมีข้อมูลเพิ่มเติมหลังจาก VDC_Flush SQL Server อาจตัดทอนบันทึกธุรกรรม อย่างไรก็ตาม หากการสํารองข้อมูลล้มเหลวในที่สุดบนไคลเอ็นต์ VDI และบันทึกธุรกรรมถูกตัดทอน การสูญเสียข้อมูลอาจเกิดขึ้น
โปรแกรมปรับปรุงนี้เพิ่มคําสั่ง VDI ใหม่ VDC_Complete ที่ระบุว่า SQL Server ได้เสร็จสิ้นการส่งข้อมูลไปยังไคลเอ็นต์ VDI ดังนั้น ไคลเอนต์ VDI จะสามารถเสร็จสิ้นการสํารองข้อมูลก่อนที่จะส่งการตอบสนองไปยัง SQL Server
ฟังก์ชันการทํางานนี้ช่วยให้ไคลเอ็นต์ VDI ล้มเหลวในการสํารองข้อมูลในกรณีที่มีบางอย่างผิดพลาด และยังป้องกันไม่ให้มีการตัดทอนบันทึกทรานแซคชันโดยไม่ได้ตั้งใจ
หมายเหตุ เมื่อต้องการสนับสนุนคําสั่ง VDC_Complete ใหม่ การอัปเดตนี้ยังเพิ่มฟีเจอร์ VDI ใหม่สองฟีเจอร์ VDF_RequestComplete และ VDF_CompleteEnabled
ข้อมูลการปรับปรุง
การปรับปรุงนี้รวมอยู่ในการอัปเดตแบบสะสมต่อไปนี้สําหรับ SQL Server:
การอัปเดตสะสม 2 สําหรับ SQL Server 2016 SP1
การอัปเดตสะสม 4 สําหรับ SQL Server 2016
การอัปเดตสะสม 5 สําหรับ SQL Server 2012 Service Pack 3 (SP3)
การอัปเดตสะสม 3 สําหรับ SQL Server 2014 SP2
การอัปเดตสะสม 10 สําหรับ SQL Server 2014 SP1
เกี่ยวกับการอัปเดตสะสมสําหรับ SQL Server
เกี่ยวกับการอัปเดตสะสมสําหรับ SQL Server
แต่ละปรับปรุงสะสมใหม่สําหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการปรับปรุงสะสมก่อนหน้านี้ ดูการอัปเดตแบบสะสมล่าสุดสําหรับ SQL Server:
การอัปเดตสะสมล่าสุดสําหรับ SQL Server 2016
การอัปเดตสะสมล่าสุดสําหรับ SQL Server 2014 SP1/SP2
การอัปเดตสะสมล่าสุดสําหรับ SQL Server 2012 SP3
ข้อมูลเพิ่มเติม
เมื่อต้องการใช้คําสั่ง VDC_Complete ใหม่
ร้องขอ VDF_RequestComplete คุณลักษณะ VDI ใหม่ หาก SQL Server สนับสนุนคําสั่ง VDC_Complete คําสั่งจะส่งกลับไม่เป็นการตอบสนอง NULL มิฉะนั้น จะส่งกลับการตอบสนองเป็น NULL สําหรับฟีเจอร์ที่ร้องขอ ตัวอย่างรหัสที่นี่จะแสดงวิธีการร้องขอฟีเจอร์:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);ตรวจสอบว่า SQL Server สนับสนุนคําสั่ง VDC_Complete ใหม่โดยใช้ฟังก์ชัน GetConfiguration หรือไม่
hr = m_pvdiComponents->m_pvdDeviceSet->GetConfiguration(timeout, m_pvdiComponents->m_pvdConfig); if (!(m_pvdiComponents->m_pvdConfig->features & VDF_CompleteEnabled)) { printf("Server does not support VDC_Complete."); return VD_E_NOTSUPPORTED; }เมื่อคุณประมวลผลข้อความ VDI ที่เรียกใช้โดยฟังก์ชัน GetCommand ให้เพิ่มคําสั่งกรณีเพิ่มเติมเพื่อประมวลผลคําสั่ง VDC_Complete
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
หมายเหตุ ข้อความ VDC_Complete ต้องรวมอยู่ในแอปพลิเคชันการสํารองข้อมูลเพื่อให้สามารถใช้การปรับปรุงได้
การอ้างอิง
เรียนรู้เกี่ยวกับคำศัพท์ที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์