Voor kwaliteitsverbetering
Het laatste verzonden bericht van SQL Server naar de VDI-client van de huidige implementatie van het SQL Server-Protocol van de Service Interface (VDI) is een VDC_Flush opdracht. Om verlies van gegevens te voorkomen, moet de VDI-client eerst de back-up voltooien voordat ze de opdracht VDC_Flush kunnen beantwoorden. Te beginnen met SQL Server 2008 en de introductie van FILESTREAM, kan de opdracht VDC_Flush meerdere keren worden verzonden tijdens het maken van een back-up. Deze bewerking veroorzaakt een probleem dat de VDI-client meerdere keren tegelijk met de back-up moet voltooien. Dit is niet mogelijk voor sommige VDI-clients. Ook als de VDI-client reageert op een VDC_Flush opdracht zonder dat de back-up wordt verkleind wanneer er meer gegevens beschikbaar zijn na de VDC_Flush, kan SQL Server het transactielogboek afkappen. Als de back-up echter uiteindelijk mislukt op de VDI-client, en het transactielogboek wordt ook afgekapt. Deze update voegt een nieuwe VDI-opdracht toe VDC_Complete waarmee wordt aangegeven dat SQL Server de verzending van gegevens naar de VDI-client heeft voltooid. Daarom kan de VDI-client de back-up voltooien voordat deze de reactie op SQL Server verstuurt. met deze functionaliteit kan de VDI-client de back-up van de client mislukt, en wordt ook voorkomen dat het transactielogboek per ongeluk wordt afgekapt.Opmerking Voor de ondersteuning van de opdracht nieuwe VDC_Complete worden in deze update ook twee nieuwe VDI-functies VDF_RequestComplete en VDF_CompleteEnabledtoegevoegd.
Informatie bijwerken
Deze verbetering is opgenomen in de volgende cumulatieve updates voor SQL Server: Cumulatieve update 2 voor SQL server 2016 SP1 cumulatief 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 cumulatief update 10 voor SQL Server 2014 SP1
Cumulatieve updates voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:
Nieuwste cumulatieve update voor SQL Server 2016
Meer informatie
Als u de opdracht nieuwe VDC_Complete wilt gebruiken, moeten de volgende implementaties op de VDI-client worden toegepast:
-
Vraag de nieuwe VDI-functie VDF_RequestComplete. Als de opdracht VDC_Complete door SQL Server wordt ondersteund, retourneert de functie een niet-NULL-antwoord. Anders is het resultaat een NULL-antwoord voor de gevraagde functie. In het voorbeeld van de code ziet u hoe u de functie moet aanvragen:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);
-
Bepaal 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 zijn opgehaald met de functie GetCommand , voegt u een extra casus 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 dit de verbeteringen kan gebruiken.
Verwijzingen
Lees meer over de terminologie die door Microsoft wordt gebruikt om software-updates te beschrijven.