Forbedring
I den gjeldende implementeringen av SQL Server Virtual Backup Device Interface-protokollen (VDI) vil den siste meldingen som sendes fra SQL Server til VDI-klienten, være en VDC_Flush-kommando. VDI-klienten må fullføre sikkerhetskopieringen før den svarer på VDC_Flush-kommandoen for å unngå tap av data.
Fra og med SQL Server 2008 og innføringen av FILESTREAM kan VDC_Flush kommandoen sendes flere ganger under en sikkerhetskopiering. Denne operasjonen fører til et problem som gjør at VDI-klienten må fullføre sikkerhetskopieringen flere ganger under sikkerhetskopieringen. Dette er ikke mulig for enkelte VDI-klienter. Hvis VDI-klienten i tillegg svarer på en VDC_Flush-kommando uten å sikre at sikkerhetskopien er herdet når det kommer mer data etter VDC_Flush, kan SQL Server avkorte transaksjonsloggen. Hvis sikkerhetskopieringen til slutt mislykkes på VDI-klienten, og transaksjonsloggen også avkortes, kan det imidlertid oppstå tap av data.
Denne oppdateringen legger til en ny VDI-kommando VDC_Complete som angir at SQL Server er ferdig med å sende data til VDI-klienten. VDI-klienten kan derfor fullføre sikkerhetskopieringen før den sender svar til SQL Server.
Denne funksjonaliteten gjør at VDI-klienten mislykkes i sikkerhetskopieringen i tilfelle noe går galt, og forhindrer også at transaksjonsloggen blir avkortet ved en feiltakelse.
Obs! Denne oppdateringen legger også til to nye VDI-funksjoner VDF_RequestComplete og VDF_CompleteEnabled for å støtte den nye VDC_Complete-kommandoen.
Oppdateringsinformasjon
Denne forbedringen er inkludert i følgende kumulative oppdateringer for SQL Server:
Kumulativ oppdatering 2 for SQL Server 2016 SP1
Kumulativ oppdatering 4 for SQL Server 2016
Kumulativ oppdatering 5 for SQL Server 2012 Service Pack 3 (SP3)
Kumulativ oppdatering 3 for SQL Server 2014 SP2
Kumulativ oppdatering 10 for SQL Server 2014 SP1
Om kumulative oppdateringer for SQL Server
Om kumulative oppdateringer for SQL Server
Hver nye kumulative oppdatering for SQL Server inneholder alle hurtigreparasjoner og alle sikkerhetsrettinger som fulgte med den forrige kumulative oppdateringen. Ta en titt på de nyeste kumulative oppdateringene for SQL Server:
Den nyeste kumulative oppdateringen for SQL Server 2016
Den nyeste kumulative oppdateringen for SQL Server 2014 SP1/SP2
Den nyeste kumulative oppdateringen for SQL Server 2012 SP3
Mer informasjon
Hvis du vil bruke kommandoen ny VDC_Complete, må følgende implementeringer brukes på VDI-klienten:
Be om den nye VDI-funksjonen VDF_RequestComplete. Hvis SQL Server støtter VDC_Complete-kommandoen, returneres et ikke NULL-svar. Ellers ville den returnert et NULL-svar for den forespurte funksjonen. Kodeeksemplet her viser hvordan du ber om funksjonen:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);Fastslå om SQL Server støtter kommandoen ny VDC_Complete ved hjelp av GetConfiguration-funksjonen.
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 behandler VDI-meldingene som hentes av GetCommand-funksjonen, legger du til en setning om ekstra bokstavtype for å behandle VDC_Complete-kommandoen.
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
Obs! Den VDC_Complete meldingen må innlemmes i sikkerhetskopieringsprogrammet slik at det kan bruke forbedringen.
Kilder
Finn ut mer om terminologien som Microsoft bruker til å beskrive programvareoppdateringer.