Poprawy
W bieżącej implementacji protokołu VDI (Virtual Backup Device Interface) Ostatnia wiadomość wysłana z programu SQL Server do klienta infrastruktury VDI będzie poleceniem VDC_Flush . Aby zapobiec utracie danych, przed udzieleniem odpowiedzi na polecenie VDC_Flush klient infrastruktury VDI musi zakończyć wykonywanie kopii zapasowej. Począwszy od programu SQL Server 2008 i wprowadzeniu funkcji FILESTREAM, polecenie VDC_Flush może być wysyłane wielokrotnie w trakcie wykonywania kopii zapasowej. Ta operacja powoduje problem polegający na tym, że klient infrastruktury VDI może wielokrotnie zakończyć tworzenie kopii zapasowej podczas operacji tworzenia kopii zapasowej. Nie jest to możliwe dla kilku klientów infrastruktury VDI. Ponadto, jeśli klient infrastruktury VDI odpowie na polecenie VDC_Flush bez zapewnienia, że wykonywanie kopii zapasowej zostanie zaostrzone, gdy więcej danych zostanie przechodzących po VDC_Flush, program SQL Server może obciąć dziennik transakcji. Jeśli jednak kopia zapasowa na kliencie VDI nie powiedzie się, a dziennik transakcji jest również obcinany, może dojść do utraty danych. Ta aktualizacja dodaje nowe VDC_Complete poleceń infrastruktury VDI wskazujące, że program SQL Server zakończył wysyłanie danych do klienta infrastruktury VDI. Dlatego klient infrastruktury VDI będzie mógł ukończyć tworzenie kopii zapasowej przed wysłaniem odpowiedzi do programu SQL Server. Ta funkcja umożliwia klientowi infrastruktury VDI niepowodzenie tworzenia kopii zapasowych na wypadek nieprawidłowego działania, a także uniemożliwienie obcięcia dziennika transakcji przez pomyłkę.Uwaga Aby można było obsługiwać nowe polecenie VDC_Complete , ta aktualizacja dodaje również dwie nowe funkcje infrastruktury VDI VDF_RequestComplete i VDF_CompleteEnabled.
Informacje o aktualizacji
Ta poprawa jest dostępna w następujących zbiorczych aktualizacjach programu SQL Server: Zbiorcza aktualizacja 2 dla programu SQL server 2016 z dodatkiem SP1 Skumulowana aktualizacja 4 dla programu SQL Server 2016
Zbiorcza aktualizacja 5 dla programu SQL server 2012 z dodatkiem Service Pack 3 (SP3)Zbiorcza aktualizacja 3 dla programu SQL Server 2014 z dodatkiem SP2Zbiorcza aktualizacja 10 dla programu SQL Server 2014 SP1
Informacje dotyczące aktualizacji zbiorczych programu SQL Server
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2016
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2014 z dodatkiem SP1/SP2
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2012 z dodatkiem SP3
Więcej informacji
Aby użyć nowego polecenia VDC_Complete , należy zastosować następujące implementacje na kliencie infrastruktury VDI:
-
Poproś o VDF_RequestComplete nowej funkcji VDI . Jeśli program SQL Server obsługuje polecenie VDC_Complete , zwróci odpowiedź not null. W przeciwnym razie zwraca odpowiedź NULL dla żądanej funkcji. W przykładzie kodu pokazano, jak zażądać funkcji:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);
-
Określ, czy program SQL Server obsługuje nowe polecenie VDC_Complete przy użyciu funkcji 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; }
-
Podczas przetwarzania wiadomości VDI pobranych za pomocą funkcji GetCommand Dodaj dodatkową instrukcję, aby przetworzyć polecenie VDC_Complete .
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
UwagaWiadomość VDC_Complete musi być włączona do aplikacji kopia zapasowa, aby mogła ona korzystać z ulepszeń.
Informacje
Informacje o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.