KB5014298 - POPRAWKA: Błąd 3241 występuje podczas wykonywania operacji przywracania bazy danych lub przywracania dziennika

Dotyczy
SQL Server 2019 on Windows

Objawy

W programie Microsoft SQL Server 2019 przywrócenie skompresowanych kopii zapasowych bazy danych lub dziennika baz danych, które mają włączone Transparent Data Encryption (TDE), może spowodować następujący błąd:

Uwaga

  • Wiadomość 3241, Poziom 16, Stan 18, Numer wiersza<>
  • Rodzina nośników "<nazwa >pliku kopii zapasowej" na urządzeniu jest niepoprawnie uformowana. Program SQL Server nie może przetworzyć tej rodziny nośników.

Obejście

Aby obejść ten problem, nie kompresuj kopii zapasowych baz danych z obsługą funkcji TDE przy użyciu jednej z następujących metod:

Rozwiązanie

Informacje o aktualizacji zbiorczej

Ten problem został rozwiązany w następującej aktualizacji zbiorczej programu SQL Server:

Aktualizacja zbiorcza 16 dla programu SQL Server 2019

Wskazówka Aby uniknąć tego problemu, należy utworzyć kopie zapasowe razem z tą poprawką. Zainstalowanie naprawionej aktualizacji zbiorczej na docelowym wystąpieniu i próba przywrócenia tej samej kopii zapasowej utworzonej bez poprawki nie zadziała.

Więcej informacji

Ważne

Począwszy od programu SQL Server 2019 CU16, tworzenie skompresowanych kopii zapasowych (bazy danych lub dziennika) baz danych z obsługą TDE będzie wykorzystywać nowy format kopii zapasowej, który można przywrócić tylko na wystąpieniu z zainstalowaną wersją CU16 lub nowszą.

Przywracanie skompresowanej kopii zapasowej bazy danych z obsługą funkcji TDE, która została utworzona w aktualizacji CU16 lub nowszej w wystąpieniu programu SQL Server 2019 w wersji CU15 lub wcześniejszej, kończy się niepowodzeniem i powoduje następujące błędy:

  • PRZYWRACANIE BAZY DANYCH

    Uwaga

    • Komunikat 3013, Poziom 16, Stan 1, Numer wiersza<>
    • Przywracanie bazy danych kończy działanie nieprawidłowo.
    • Wiadomość 9004, Poziom 21, Stan 1, Numer wiersza<>
    • Wystąpił błąd podczas przetwarzania dziennika bazy danych "TDE_DB". Jeśli to możliwe, przywróć dane z kopii zapasowej. Jeśli kopia zapasowa nie jest dostępna, może być konieczne odbudowanie dziennika.
  • PRZYWRÓĆ DZIENNIK

    Uwaga

    • Lokalizacja: mediaRead.cpp:1018
    • Wyrażenie: readSize <= m_Demand
    • SPID: 84
    • Identyfikator procesu: ProcessID
    • Komunikat 3013, Poziom 16, Stan 1, Numer wiersza<>
    • PRZYWRÓĆ DZIENNIK kończy działanie nieprawidłowo.
    • Wiadomość 3624, Poziom 20, Stan 1, Numer wiersza<>
    • Sprawdzanie potwierdzeń systemu nie powiodło się. Sprawdź dziennik błędów programu SQL Server, aby uzyskać szczegółowe informacje. Zazwyczaj niepowodzenie asercji jest spowodowane błędem oprogramowania lub uszkodzeniem danych. Aby sprawdzić, czy baza danych nie jest uszkodzona, rozważ uruchomienie polecenia DBCC CHECKDB. Jeśli wyrażono zgodę na wysyłanie zrzutów do firmy Microsoft podczas instalacji, minizrzut zostanie wysłany do firmy Microsoft. Aktualizacja może być dostępna od firmy Microsoft w najnowszym dodatku Service Pack lub w poprawce z pomocy technicznej.

Wskazówka Ten problem nie dotyczy instrukcji RESTORE HEADERONLY i RESTORE FILELISTONLY i będą działać we wszystkich przypadkach.

RESTORE VERIFYONLY może pomyślnie powrócić dla PEŁNEJ kopii zapasowej, która jest nieprawidłowa zgodnie z powyższym scenariuszem: nie polegaj na RESTORE VERIFYTYLKO po to, aby ustalić, że kopię zapasową można przywrócić bez natrafienia na powyższy problem. PRZYWRÓĆ WERYFIKUJtylko w przypadku kopii zapasowej dziennika zwykle kończy się niepowodzeniem z tym samym błędem, co rzeczywisty PRZYWRÓĆ DZIENNIK opisany powyżej.

Dlatego ważne jest, aby upewnić się, że w kontekście, w którym TDE i kompresja kopii zapasowych mogą być włączone, wszystkie wystąpienia programu SQL Server 2019 korzystające z kopii zapasowych z innych wystąpień programu SQL Server 2019 otrzymają aktualizację CU16 (lub nowszą) przed instancjami, które generują materiał kopii zapasowej. Architektury wysyłania dzienników byłyby doskonałym przykładem takiej sytuacji: najpierw uaktualnij instancje pomocnicze.

Po utworzeniu kopii zapasowej dziennika transakcji z kompresją zwykle nie jest możliwe jej odtworzenie bez kompresji. Dlatego uaktualnienie serwera podstawowego wysyłki dzienników do programu SQL Server 2019 CU16 lub nowszego w takim kontekście przerwałoby zadania przywracania, dopóki serwer pomocniczy również nie zostanie uaktualniony.

Nieskompresowana kopia zapasowa bazy danych z obsługą TDE, skompresowana kopia zapasowa bazy danych, która nie jest włączona dla TDE lub nieskompresowana kopia zapasowa bazy danych, która nie jest włączona dla TDE nie będzie używać nowego formatu kopii zapasowej wprowadzonego w aktualizacji CU16 i może zostać przywrócona w wystąpieniu programu SQL Server 2019 dowolnej wersji.

Dlatego wymagane jest wyłączenie kompresji kopii zapasowej, jeśli planujesz przywrócić materiał bazy danych z obsługą TDE (pełną kopię zapasową lub kopię zapasową dziennika transakcji) do dowolnych wystąpień programu SQL Server wcześniejszych wersji przed SQL Server 2019 CU16.

Informacje o aktualizacjach zbiorczych dla programu SQL Server

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń z poprzedniej kompilacji. Zalecamy zainstalowanie najnowszej kompilacji dla używanej wersji programu SQL Server:

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2019

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Źródła informacji

Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.