Optimización
En la implementación actual del protocolo interfaz de dispositivo de copia de seguridad virtual (VDI) de SQL Server, el último mensaje enviado desde SQL Server al cliente de VDI será un comando de VDC_Flush . Para evitar la pérdida de datos, el cliente VDI debe finalizar la copia de seguridad antes de responder al comando VDC_Flush . A partir de SQL Server 2008 y la introducción de FILESTREAM, el comando VDC_Flush se puede enviar varias veces durante una copia de seguridad. Esta operación provoca un problema que el cliente de VDI tiene que finalizar la copia de seguridad varias veces durante la operación de copia de seguridad. Esto no es posible para algunos clientes de VDI. Además, si el cliente de VDI responde a un comando de VDC_Flush sin garantizar que se refuerce la copia de seguridad cuando haya más datos después de la VDC_Flush, SQL Server puede truncar el registro de transacciones. Sin embargo, si se produce un error en la copia de seguridad en el cliente de VDI y también se trunca el registro de transacciones, podría producirse pérdida de datos. Esta actualización agrega un nuevo comando de VDI VDC_Complete que indica que SQL Server ha completado el envío de datos al cliente de VDI. Por lo tanto, el cliente de VDI podrá finalizar la copia de seguridad antes de enviar una respuesta a SQL Server. esta funcionalidad permite que el cliente de VDI no pueda realizar la copia de seguridad en caso de que algo falle, y también evita que el registro de transacciones se trunque por error.Nota Para admitir el nuevo comando VDC_Complete , esta actualización también agrega dos nuevas características de VDI VDF_RequestComplete y VDF_CompleteEnabled.
Información de la actualización
Esta mejora se incluye en las siguientes actualizaciones acumulativas para SQL Server: Actualización acumulativa 2 para SQL server 2016 SP1 actualización acumulativa 4 para SQL Server 2016
Actualización acumulativa 5 para SQL server 2012 Service Pack 3 (SP3) actualización acumulativa 3 para SQL Server 2014 SP2 Cumulative update 10 para SQL Server 2014 SP1
Acerca de las actualizaciones acumulativas de SQL Server
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:
Actualización acumulativa más reciente de SQL Server 2016
Actualización acumulativa más reciente de SQL Server 2014 SP1/SP2
Actualización acumulativa más reciente de SQL Server 2012 SP3
Más información
Para usar el nuevo comando VDC_Complete , se deben aplicar las siguientes implementaciones a su cliente de VDI:
-
Solicite la nueva característica de VDI VDF_RequestComplete. Si SQL Server admite el comando VDC_Complete , devolverá una respuesta NOT NULL. En caso contrario, devolvería una respuesta nula para la característica solicitada. En el código de ejemplo siguiente se muestra cómo solicitar la característica:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);
-
Determine si SQL Server admite el nuevo comando VDC_Complete con la función 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; }
-
Cuando procese los mensajes de la VDI que se capturan mediante la función GetCommand , agregue otra instrucción Case para procesar el comando VDC_Complete .
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
Nota: El mensaje de VDC_Complete debe incorporarse a la aplicación de copia de seguridad para que pueda usar la mejora.
Referencias
Obtenga más información sobre la terminología que Microsoft usa para describir las actualizaciones de software.