التحسين
في التطبيق الحالي لبروتوكول واجهه جهاز النسخ الاحتياطي الظاهري ل SQL Server (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 بفشل عمليه النسخ الاحتياطي في حاله حدوث خطا ما ، وتمنع أيضا سجل المعاملات التي يتم اقتطاعها عن طريق الخطا.ملاحظة يتم إصدار Acrobat Reader من قِبل شركة Adobe Systems Inc.. لدعم أمر الVDC_Complete الجديد ، يقوم هذا التحديث أيضا باضافه ميزتين جديدتين لVDI VDF_RequestCompleteوVDF_CompleteEnabled.
تحديث المعلومات
هذا التحسين مضمن في التحديثات التراكمية التالية ل SQL Server: تحديث تراكمي 2 ل Sql server 2016 SP1 التحديث التراكمي 4 ل sql server 2016
تحديث تراكمي 5 FOR 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 2016
مزيد من المعلومات
لاستخدام الأمر VDC_Complete جديد ، يجب تطبيق التطبيقات التالية علي عميل VDI الخاص بك:
-
اطلب VDF_RequestComplete ميزه VDI الجديدة . إذا كان SQL Server يدعم الأمر VDC_Complete ، سيتم إرجاع استجابه غير فارغه. وبخلاف ذلك ، سيتم إرجاع استجابه فارغه للميزة المطلوبة. توضح عينه التعليمات البرمجية هنا كيفيه طلب الميزة:
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 باستخدام الدالة جيتكونفيجوريشن .
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 التي يتم إحضارها بواسطة الدالة جيتكوماند ، أضف جمله حالات اضافيه لمعالجه الأمر VDC_Complete .
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
ملاحظه يجب ان يتم دمج الرسالة الVDC_Completeه في تطبيق النسخة الاحتياطية لكي تتمكن من استخدام التحسين.
المراجع
تعرف علي المصطلحات التي تستخدمها Microsoft لوصف تحديثات البرامج.