Miglioramento
Nell'implementazione corrente del protocollo VDI (Virtual Backup Device Interface) di SQL Server, l'ultimo messaggio inviato da SQL Server al client VDI sarà un comando VDC_Flush. Per evitare la perdita di dati, il client VDI deve completare il backup prima di rispondere al comando VDC_Flush.
A partire da SQL Server 2008 e dall'introduzione di FILESTREAM, il comando VDC_Flush può essere inviato più volte durante un backup. Questa operazione causa un problema per cui il client VDI deve completare il backup più volte durante l'operazione di backup. Questo non è possibile per alcuni client VDI. Inoltre, se il client VDI risponde a un comando VDC_Flush senza verificare la protezione avanzata del backup quando sono in arrivo altri dati dopo il VDC_Flush, SQL Server potrebbe troncare il log delle transazioni. Tuttavia, se alla fine il backup non riesce nel client VDI e anche il log delle transazioni viene troncato, potrebbe verificarsi una perdita di dati.
Questo aggiornamento aggiunge un nuovo VDC_Complete di comando VDI che indica che SQL Server ha completato l'invio dei dati al client VDI. Pertanto, il client VDI sarà in grado di completare il backup prima di inviare la risposta a SQL Server.
Questa funzionalità consente al client VDI di non riuscire a eseguire il backup nel caso in cui si verifichi un errore, impedendo inoltre che il log delle transazioni venga troncato per errore.
Nota: per supportare il nuovo comando VDC_Complete, questo aggiornamento aggiunge anche due nuove funzionalità VDI, VDF_RequestComplete e VDF_CompleteEnabled.
Informazioni sull'aggiornamento
Questo miglioramento è incluso nei seguenti aggiornamenti cumulativi per SQL Server:
Aggiornamento cumulativo 2 per SQL Server 2016 SP1
Aggiornamento cumulativo 4 per SQL Server 2016
Aggiornamento cumulativo 5 per SQL Server 2012 Service Pack 3 (SP3)
Aggiornamento cumulativo 3 per SQL Server 2014 SP2
Aggiornamento cumulativo 10 per SQL Server 2014 SP1
Informazioni sugli aggiornamenti cumulativi per SQL Server
Informazioni sugli aggiornamenti cumulativi per SQL Server
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. Vedere gli aggiornamenti cumulativi più recenti per SQL Server:
Aggiornamento cumulativo più recente per SQL Server 2016
Aggiornamento cumulativo più recente per SQL Server 2014 SP1/SP2
Aggiornamento cumulativo più recente per SQL Server 2012 SP3
Altre informazioni
Per usare il nuovo comando VDC_Complete, è necessario applicare le implementazioni seguenti al client VDI:
Richiedere la nuova funzionalità VDI VDF_RequestComplete. Se SQL Server supporta il comando VDC_Complete, restituirà una risposta not NULL. In caso contrario, restituirebbe una risposta NULL per la funzionalità richiesta. L'esempio di codice seguente mostra come richiedere la funzionalità:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);Determinare se il server SQL supporta il nuovo comando VDC_Complete usando la funzione 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; }Quando si elaborano i messaggi VDI recuperati dalla funzione GetCommand, aggiungere un'istruzione case aggiuntiva per elaborare il comando VDC_Complete.
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
Nota: il messaggio VDC_Complete deve essere incorporato nell'applicazione di backup in modo che possa utilizzare il miglioramento.
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.