Verbetering
In de huidige implementatie van het SQL Server VDI-protocol (Virtual Backup Device Interface) is het laatste bericht dat van SQL Server naar de VDI-client wordt verzonden een VDC_Flush-opdracht. Om gegevensverlies te voorkomen, moet de VDI-client de back-up voltooien voordat op de opdracht van de VDC_Flush kan worden gereageerd.
Vanaf SQL Server 2008 en de introductie van FILESTREAM kan het VDC_Flush commando meerdere keren worden verzonden tijdens een back-up. Deze bewerking veroorzaakt een probleem dat de VDI-client de back-up meerdere keren moet voltooien tijdens de back-upbewerking. Voor sommige VDI-clients is dit niet mogelijk. Als de VDI-client reageert op een VDC_Flush-opdracht zonder ervoor te zorgen dat de back-up wordt beveiligd wanneer er meer gegevens na de VDC_Flush komen, kan SQL Server het transactielogboek afkappen. Als de back-up echter uiteindelijk mislukt op de VDI-client en het transactielogboek ook wordt afgekapt, kan er gegevensverlies optreden.
Deze update voegt een nieuwe VDI-opdracht toe VDC_Complete die aangeeft dat SQL Server klaar is met het verzenden van gegevens naar de VDI-client. Hierdoor kan de VDI-client de back-up voltooien voordat het antwoord naar SQL Server wordt verzonden.
Met deze functionaliteit kan de VDI-client de back-up mislukken als er iets misgaat, en wordt ook voorkomen dat het transactielogboek per ongeluk wordt afgekapt.
Opmerking Ter ondersteuning van de nieuwe opdracht VDC_Complete worden met deze update ook twee nieuwe VDI-functies VDF_RequestComplete en VDF_CompleteEnabled toegevoegd.
Informatie over de update
Deze verbetering is opgenomen in de volgende cumulatieve updates voor SQL Server:
Cumulatieve update 2 voor SQL Server 2016 SP1
Cumulatieve update 4 voor SQL Server 2016
Cumulatieve update 5 voor SQL Server 2012 Service Pack 3 (SP3)
Cumulatieve update 3 voor SQL Server 2014 SP2
Cumulatieve update 10 voor SQL Server 2014 SP1
Informatie over cumulatieve updates voor SQL Server
Informatie over cumulatieve updates voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:
Meest recente cumulatieve update voor SQL Server 2016
Meest recente cumulatieve update voor SQL Server 2014 SP1/SP2
Meest recente cumulatieve update voor SQL Server 2012 SP3
Meer informatie
Als je de nieuwe opdracht VDC_Complete wilt gebruiken, moeten de volgende implementaties worden toegepast op je VDI-client:
Vraag de nieuwe VDI-functie VDF_RequestComplete aan. Als SQL Server de opdracht VDC_Complete ondersteunt, wordt er een niet-NULL-antwoord geretourneerd. Anders wordt een NULL-antwoord geretourneerd voor de aangevraagde functie. In dit codevoorbeeld ziet u hoe u de functie kunt aanvragen:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);Controleer of de SQL Server de nieuwe opdracht VDC_Complete ondersteunt met behulp van de functie 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; }Wanneer u de VDI-berichten verwerkt die worden opgehaald door de functie GetCommand, voegt u een extra case-instructie toe om de opdracht VDC_Complete te verwerken.
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
Opmerking: het VDC_Complete bericht moet worden opgenomen in de back-uptoepassing, zodat de verbetering kan worden gebruikt.
Meer informatie
Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.