Melhoria
Na implementação atual do protocolo SQL Server Virtual Backup Device Interface (VDI), a última mensagem enviada do SQL Server para o cliente VDI será um comando VDC_Flush. Para evitar a perda de dados, o cliente VDI deve terminar a cópia de segurança antes de responder ao comando VDC_Flush. Começando pelo SQL Server 2008 e pela introdução do FILESTREAM, o comando VDC_Flush pode ser enviado várias vezes durante uma cópia de segurança. Esta operação causa um problema que o cliente VDI tem de terminar a cópia de segurança várias vezes durante a operação de backup. Isto não é possível para alguns clientes VDI. Além disso, se o cliente VDI responder a um comando VDC_Flush sem garantir que a cópia de segurança é endurecida quando mais dados estão a chegar após o VDC_Flush,o SQL Server pode truncar o registo de transações. No entanto, se a cópia de segurança eventualmente falhar no cliente VDI, e o registo de transações também for truncado, a perda de dados poderá ocorrer. Esta atualização adiciona um novo comando VDI VDC_Complete que indica que o SQL Server completou o envio de dados para o cliente VDI. Portanto, o cliente VDI será capaz de terminar a cópia de segurança antes de enviar a resposta ao SQL Server.Esta funcionalidade permite que o cliente VDI falhe na cópia de segurança caso algo corra mal, e também impede que o registo de transações seja truncado por engano.Nota Para suportar o novo comando VDC_Complete, esta atualização também adiciona duas novas funcionalidades de VDI VDF_RequestComplete e VDF_CompleteEnabled.
Atualizar informações
Esta melhoria está incluída nas seguintes atualizações cumulativas para o SQL Server: Atualização Cumulativa 2 para SQL Server 2016 SP1 Atualização Cumulativa 4 para SQL Server 2016
Atualização Cumulativa 5 para SQL Server 2012 Service Pack 3 (SP3) Atualização Cumulativa 3 para SQL Server 2014 SP2 Atualização Cumulativa 10 para SQL Server 2014 SP1
Sobre atualizações cumulativas para o SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Última atualização cumulativa para SQL Server 2016
Mais Informações
Para utilizar o novo comando VDC_Complete, as seguintes implementações têm de ser aplicadas ao seu cliente VDI:
-
Solicite o novo recurso VDI VDF_RequestComplete. Se o SQL Server suportar o comando VDC_Complete, retornará uma resposta não NU. Caso contrário, devolveria uma resposta NU PARA a funcionalidade solicitada. A amostra de código aqui mostra como solicitar a funcionalidade:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);
-
Determine se o SQL Server suporta o novo comando VDC_Complete utilizando a função 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 processar as mensagens VDI que são recolhidas pela função GetCommand, adicione uma declaração adicional de caso para processar o comando VDC_Complete.
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
NotaA mensagem VDC_Complete tem de ser incorporada na aplicação de backup para que possa utilizar a melhoria.
Referências
Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.