Ökning
I den aktuella implementeringen av http server-protokollet för virtuella säkerhets kopierings enheter (VDI) är det sista meddelandet som skickas från SQL Server till VDI-klienten en VDC_Flush -kommando. För att förhindra data förlust måste VDI-klienten slutföra säkerhets kopieringen innan du svarar på kommandot VDC_Flush . Med början från SQL Server 2008 och introduktionen av FILESTREAM kan kommandot VDC_Flush skickas flera gånger under en säkerhets kopiering. Denna åtgärd orsakar ett problem som VDI-klienten måste slutföra säkerhets kopieringen flera gånger under säkerhets kopieringen. Det är inte möjligt för vissa VDI-klienter. Om VDI-klienten svarar på ett VDC_Flush -kommando utan att säkerställa att säkerhets kopieringen är strikt när mer data kommer efter VDC_Flushkan SQL Server trunkera transaktions loggen. Men om säkerhets kopieringen Miss lyckas på VDI-klienten, och transaktions loggen också trunkeras, kan data förloras. Den här uppdateringen lägger till ett nytt VDI-kommando VDC_Complete som indikerar att SQL Server har slutfört sändningen av data till VDI-klienten. Därför kan VDI-klienten slutföra säkerhets kopieringen innan det skickar svar till SQL Server. den här funktionen gör att VDI-klienten inte kan göra säkerhets kopieringen ifall något går fel och även hindrar transaktions loggen från misstag.Obs! För att stöda kommandot ny VDC_Complete lägger uppdateringen också till två nya VDI-funktioner VDF_RequestComplete och VDF_CompleteEnabled.
Uppdaterings information
Den här förbättringen ingår i följande kumulativa uppdateringar för SQL Server: Kumulativ uppdatering 2 för SQL server 2016 SP1 kumulativ uppdatering 4 för SQL Server 2016
Kumulativ uppdatering 5 för SQL server 2012 Service Pack 3 (SP3) kumulativ uppdatering 3 för SQL Server 2014 SP2 kumulativ uppdatering 10 för SQL Server 2014 SP1
Om kumulativa uppdateringar för SQL Server
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Senaste kumulativa uppdateringen för SQL Server 2016
Senaste kumulativa uppdateringen för SQL Server 2014 SP1/SP2
Mer information
För att använda kommandot ny VDC_Complete måste följande implementeringar tillämpas på din VDI-klient:
-
Begära den nya VDI-funktionen VDF_RequestComplete. Om SQL Server har stöd för kommandot VDC_Complete returneras ett null-svar. Annars returnerar det ett NULL-svar för den begärda funktionen. Koden nedan visar hur du kan begära funktionen:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);
-
Avgöra om SQL Server har stöd för kommandot ny VDC_Complete med hjälp av funktionen 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; }
-
När du bearbetar de VDI-meddelanden som hämtas med funktionen GetCommand lägger du till ett ytterligare Case-uttryck för att behandla kommandot VDC_Complete .
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
Obs! VDC_Complete-meddelandet måste ingå i säkerhets kopierings programmet så att det kan använda förbättringen.
Referenser
Lär dig mer om terminologin som Microsoft använder för att beskriva program varu uppdateringar.