Udostępnij za pomocą


Nieskładnikowe kopie zapasowe usługi VSS, takie jak zadania usługi Azure Site Recovery, kończą się niepowodzeniem na serwerach hostujący wystąpienia programu SQL Server z bazami danych AUTO_CLOSE

Ten artykuł pomaga rozwiązać problem polegający na tym, że nieskładnikowe kopie zapasowe usługi kopiowania woluminów w tle (VSS), takie jak zadania usługi Azure Site Recovery (ASR) kończą się niepowodzeniem na serwerach hostujących wystąpienia programu SQL Server z bazami AUTO-CLOSE danych.

Oryginalna wersja produktu: SQL Server 2017 w systemie Windows, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server na maszynie wirtualnej — Windows
Oryginalny numer KB: 4504104

Symptomy

Rozważmy następujący scenariusz:

  • Masz serwer z uruchomioną dowolną wersją programu Microsoft SQL Server.
  • To wystąpienie programu SQL Server hostuje bazy danych z zestawem opcji AUTO-CLOSE.
  • Uruchamiasz kopię zapasową usługi VSS nieskładnikową (na przykład przy użyciu agenta usługi ASR) na woluminach tego serwera, który hostuje pliki bazy danych programu SQL Server.

W takiej sytuacji zauważysz, że tworzenie kopii zapasowej usługi VSS kończy się niepowodzeniem i wyzwala następujący wpis w dzienniku aplikacji:

Składnik zapisywania usługi VSS odrzucił zdarzenie z powodu błędu 0x800423f4, składnik zapisywania napotkał błąd nie przejściowy. Jeśli proces tworzenia kopii zapasowej zostanie ponowiony, prawdopodobnie wystąpi błąd. Zmiany wprowadzone przez składnik zapisywania składników zapisywania podczas obsługi zdarzenia nie będą dostępne dla modułu żądającego. Sprawdź dziennik zdarzeń pod kątem powiązanych zdarzeń z aplikacji obsługującej składnik zapisywania usługi VSS.
Operacja:
Zdarzenie PostSnapshot
Kontekst:
Kontekst wykonywania: składnik zapisywania
Identyfikator klasy składnika zapisywania: {ID}
Nazwa składnika zapisywania: SqlServerWriter
Nazwa wystąpienia składnika zapisywania: Microsoft SQL Server 2012:SQLWriter
Identyfikator wystąpienia składnika zapisywania: {ID}
Wiersz polecenia: "C:\Program Files\Microsoft SQL Server\90\Shared\sqlwriter.exe""
Identyfikator procesu: xxx"

Przyczyna

Ten problem występuje, ponieważ program SQL Server SQLWriter obecnie nie obsługuje poprawnie baz danych AUTO-CLOSE w trybie nieskładnikowym żądań kopii zapasowych usługi VSS.

Rozwiązanie

W ramach krótkoterminowego ograniczania ryzyka zalecamy wyłączenie opcji AUTO-CLOSE we wszystkich bazach danych wszystkich wystąpień programu SQL Server hostowanych na serwerach, które odbierają kopie zapasowe usługi VSS nieskładnikowych. Zazwyczaj na maszynach wirtualnych platformy Azure z uruchomionym programem SQL Server ma wpływ, ponieważ agent usługi ASR uruchamia takie kopie zapasowe, które nie są składnikami.

Więcej informacji

  • Domyślnie AUTO_CLOSE właściwość jest ustawiona na WYŁ . w programie SQL Server Understanding SQL Express zachowanie: użycie zasobów czasu bezczynności, AUTO_CLOSE i wystąpienia użytkowników. Jeśli masz pewność, że to ustawienie nie zostało włączone ręcznie na serwerach, które mogą mieć wpływ na ten problem, zbadaj wszystkie wystąpienia programu SQL Server Express, które mogły zostać zainstalowane w trybie dyskretnym jako składniki innych aplikacji.

  • Aby uzyskać listę baz danych z AUTO_CLOSE włączonym trybem, uruchom zapytanie względem danego wystąpienia programu SQL Server: select name,database_id,is_auto_close_on from sys.databases where is_auto_close_on=1.

  • Aby zmienić ustawienie, zapoznaj się z sekcją AUTO_CLOSE ALTER DATABASE SET Options (Opcje ALTER DATABASE SET) w dokumentacji online dla języka TSQL.

    • Aby przełączyć tę opcję na WYŁ., uruchom następujące polecenie w domyślnym sqlcmd.exe klienta (na przykład dla bazy danych Moja baza danych):

      alter database <myDatabase> set auto_close OFF
      
    • Zmiana zostanie w życie natychmiast. Aby przywrócić tę zmianę, uruchom następujące polecenie:

      alter database <myDatabase> set auto_close ON
      
  • Jeśli wolisz metodę graficznego interfejsu użytkownika, użyj opcji właściwości>bazy danych w programie SQL Server Management Studio.