ปรุง
ในการใช้งานปัจจุบันของโพรโทคอล SQL Server เสมือนสำรองอุปกรณ์ส่วนติดต่อ (VDI) ข้อความสุดท้ายที่ส่งจาก SQL Server ไปยังไคลเอ็นต์ VDI จะเป็นคำสั่งVDC_Flush เมื่อต้องการป้องกันการสูญหายของข้อมูลไคลเอ็นต์ VDI ต้องเสร็จสิ้นการสำรองข้อมูลก่อนที่จะตอบสนองต่อคำสั่งVDC_Flush เริ่มต้นด้วย SQL Server ๒๐๐๘และการแนะนำของ FILESTREAM คำสั่ง VDC_Flush สามารถส่งหลายครั้งในระหว่างการสำรองข้อมูล การดำเนินการนี้จะทำให้เกิดปัญหาที่ไคลเอ็นต์ VDI เสร็จสิ้นการสำรองข้อมูลหลายครั้งในระหว่างการดำเนินการสำรองข้อมูล การทำเช่นนี้ไม่สามารถใช้ได้กับไคลเอ็นต์ VDI บางรายการ นอกจากนี้ถ้าไคลเอ็นต์ VDI ตอบสนองต่อคำสั่ง VDC_Flush โดยไม่มีการตรวจสอบให้แน่ใจว่าการสำรองข้อมูลจะเป็นแบบแข็งเมื่อข้อมูลเพิ่มเติมจะมาหลังจาก VDC_FlushSQL Server อาจตัดบันทึกทรานแซคชัน อย่างไรก็ตามถ้าการสำรองข้อมูลในที่สุดล้มเหลวบนไคลเอ็นต์ VDI และบันทึกทรานแซคชันจะถูกตัดทอนข้อมูลสูญหายของข้อมูลอาจเกิดขึ้น การอัปเดตนี้เพิ่มคำสั่ง VDI ใหม่ VDC_Complete ที่ระบุว่า SQL Server ได้เสร็จสิ้นการส่งข้อมูลไปยังไคลเอ็นต์ VDI ดังนั้นไคลเอ็นต์ VDI จะสามารถเสร็จสิ้นการสำรองข้อมูลก่อนที่จะส่งการตอบกลับไปยัง SQL Server ฟังก์ชันการทำงานนี้ทำให้ไคลเอ็นต์ VDI ล้มเหลวในการสำรองข้อมูลในกรณีที่มีข้อผิดพลาดเกิดขึ้นและป้องกันไม่ให้ล็อกธุรกรรมถูกตัดทอนโดยไม่ได้ตั้งใจหมายเหตุ เมื่อต้องการสนับสนุนคำสั่งVDC_Completeใหม่การอัปเดตนี้ยังเพิ่มฟีเจอร์ VDI ใหม่สองฟีเจอร์VDF_RequestCompleteและVDF_CompleteEnabled
ข้อมูลการปรับปรุง
การปรับปรุงนี้จะรวมอยู่ในการอัปเดตที่สะสมต่อไปนี้สำหรับ SQL Server: การอัปเดตที่สะสม2สำหรับ Sql server ๒๐๑๖ SP1การอัปเดตที่สะสม4สำหรับ sql server ๒๐๑๖
การอัปเดตที่สะสม5สำหรับ Sql server ๒๐๑๒ Service Pack 3 (SP3) การอัปเดตที่สะสม3สำหรับ SQL server ๒๐๑๔ SP2การอัปเดตที่สะสม10สำหรับ sql server ๒๐๑๔ SP1
เกี่ยวกับการอัปเดตที่สะสมสำหรับ SQL Server
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
การอัปเดตที่สะสมล่าสุดสำหรับ SQL Server ๒๐๑๖
ข้อมูลเพิ่มเติม
เมื่อต้องการใช้คำสั่ง VDC_Complete ใหม่การใช้งานต่อไปนี้จะต้องถูกนำไปใช้กับไคลเอ็นต์ VDI ของคุณ:
-
การร้องขอฟีเจอร์ VDI ใหม่ VDF_RequestComplete ถ้า 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 ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์