Dividi
Na implementação atual do protocolo de virtual backup Device Interface (VDI) do SQL Server, 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 finalizar 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 em que o cliente VDI precisa concluir o backup várias vezes durante a operação de backup. Isso não é possível para alguns clientes do 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, o SQL Server poderá truncar o log de transação. No entanto, se o backup acabar com falha no cliente VDI e o log de transação também estiver truncado, Talvez ocorra perda de dados. Esta atualização adiciona um novo comando VDI VDC_Complete que indica que o SQL Server concluiu o envio de dados para o cliente VDI. Portanto, o cliente VDI poderá finalizar o backup antes de enviar resposta ao SQL Server. essa funcionalidade permite que o cliente VDI falhe no backup caso algo dê errado e também Evite que o log de transação seja truncado por engano.Observação Para dar suporte ao novo comando VDC_Complete , esta atualização também adiciona dois novos recursos do VDI VDF_RequestComplete e VDF_CompleteEnabled.
Informações de atualização
Esse aperfeiçoamento está incluído nas seguintes atualizações cumulativas do SQL Server: Atualização cumulativa 2 para a atualização cumulativa 4 do SQL server 2016 SP1 para SQL Server 2016
Atualização cumulativa 5 para SQL server 2012 Service Pack 3 (SP3)atualização cumulativa 3 para SQL Server 2014 SP2atualização cumulativa 10 para SQL Server 2014 SP1
Sobre as atualizações cumulativas do SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Atualização cumulativa mais recente do SQL Server 2016
Atualização cumulativa mais recente do SQL Server 2014 SP1/SP2
Informações adicionais
Para usar o novo comando VDC_Complete , as seguintes implementações devem ser aplicadas ao cliente VDI:
-
Solicite o novo recurso do VDI VDF_RequestComplete. Se o SQL Server der suporte ao comando VDC_Complete , ele retornará uma resposta não nula. Caso contrário, ele retornará uma resposta nula para o recurso solicitado. 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 tem suporte para o novo comando 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 de VDI que são buscadas 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çãoA mensagem VDC_Complete deve ser incorporada ao aplicativo de backup para que possa usar o aperfeiçoamento.
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.