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 concluir o backup antes de responder ao comando VDC_Flush.
A partir do SQL Server 2008 e da introdução do FILESTREAM, o comando VDC_Flush pode ser enviado várias vezes durante um backup. Essa operação causa um problema que o cliente VDI tem que concluir o backup várias vezes durante a operação de backup. Isso não é possível para alguns clientes VDI. Além disso, se o cliente VDI responder a um comando VDC_Flush sem garantir que o backup seja protegido quando mais dados estiverem chegando após o VDC_Flush, SQL Server poderá truncar o log de transações. No entanto, se o backup eventualmente falhar no cliente VDI e o log de transações também estiver truncado, a perda de dados poderá ocorrer.
Esta atualização adiciona um novo comando VDI VDC_Complete que indica que SQL Server concluiu o envio de dados para o cliente VDI. Portanto, o cliente VDI será capaz de concluir o backup antes de enviar a resposta para SQL Server.
Essa funcionalidade permite que o cliente VDI falhe no backup caso algo dê errado e também impede que o log de transações seja truncado por engano.
Observação Para oferecer suporte ao novo comando VDC_Complete, esta atualização também adiciona dois novos recursos VDI VDF_RequestComplete e VDF_CompleteEnabled.
Informações de atualização
Esta melhoria está incluída nas seguintes atualizações cumulativas para 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
Sobre atualizações cumulativas para o SQL Server
Cada nova atualização cumulativa para 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. Consulte as atualizações cumulativas mais recentes para SQL Server:
Atualização cumulativa mais recente para o SQL Server 2016
Atualização cumulativa mais recente para o SQL Server 2014 SP1/SP2
Atualização cumulativa mais recente para o SQL Server 2012 SP3
Mais informações
Para usar o novo comando VDC_Complete, as seguintes implementações devem ser aplicadas ao seu cliente VDI:
Solicite o novo recurso VDI VDF_RequestComplete. Se SQL Server suportar o comando VDC_Complete, devolverá uma resposta não NULL. Caso contrário, devolveria uma resposta NULL para a funcionalidade pedida. O exemplo de código aqui mostra como solicitar o recurso:
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 comando new VDC_Complete usando 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; }Ao processar as mensagens VDI obtidas pela função GetCommand, adicione uma instrução case adicional 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;
Observação A mensagem VDC_Complete deve ser incorporada ao aplicativo de backup para que ele possa usar a melhoria.
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.