Udostępnij za pośrednictwem


Deferred Transactions

W SQL Server 2005 Enterprise Edition i nowszych wersji, uszkodzone transakcji może stać się odroczone Jeśli danych wymaganych przez wycofywania (cofnąć) jest w trybie offline podczas uruchamiania bazy danych. A transakcja odroczona jest transakcja, która jest nieprzydzielonych po zakończeniu fazy przenieść na przyszły okres i, wystąpił błąd uniemożliwiający zostanie przywrócona.Ponieważ nie można wycofać transakcji, jest odłożone.

Uwaga

Uszkodzone transakcji odroczenia są tylko w SQL Server 2005 Enterprise Edition i jego nowszych wersjach. W innych wersjach SQL Server, uszkodzone transakcji powoduje uruchamianie nie powiedzie się.

Ogólnie rzecz biorąc transakcja odroczona występuje, ponieważ w czasie, gdy baza danych została jest wycofywany do przodu, błąd We/Wy uniemożliwił odczytywania strona, która została wymaganych przez transakcję.Jednak błąd poziom pliku może spowodować odroczonych transakcji.transakcja odroczona może również wystąpić podczas sekwencji częściowe przywracanie zatrzymuje się w punkcie, w której transakcja jest wycofywania i transakcja wymaga danych, który jest w trybie offline.

Transakcje użytkownika, które są wycofywanie i kliknij błąd We/Wy spowodować całej bazy danych przejść do trybu offline.Gdy baza danych przenoszona z powrotem do trybu online, ponowne wykonanie reacquires wszystkie blokady miał i próbuje przywrócić wszystkie niezakończone transakcje.Wszystkie dane zmodyfikowane przez transakcję pozostaje odpowiednio zablokowane, dopóki nie można wycofać transakcji.Transakcje, które nie może zostać przywrócona nada ich blokad po uszkodzeniu jest ustalony i ponownie uruchomić bazy danych lub po przywracanie w trybie online, gdy odroczonych transakcji są rozpoznawane w bazie danych pozostaje w trybie online.Do czasu, punktu transakcja odroczona może zawierać blokady, które uniemożliwiają pewnych operacji na bazie danych jako całości.Na przykład jeśli transakcja odroczona zawiera instrukcji CREATE tabela, użytkownik nie może utworzyć tabela, dopóki nie został rozwiązany transakcja odroczona.

transakcja odroczona może również wystąpić, ponieważ przywracanie fragmentaryczne odzyskuje bazy danych do punktu, w którym aktywnych transakcji mają wpływ na grupa plików, które nie zostały jeszcze przywrócono i jest w trybie offline.Ponieważ nie można wycofać transakcji, stają się one odłożone.

W poniższej tabela wymieniono akcje, które powodują bazy danych do wykonania odzyskiwanie i wyniku, jeśli występuje problem z We/Wy.

Action

Rozdzielczość (Jeśli występują problemy we/wy lub wymaganych danych jest w trybie offline)

Rozpoczęcie serwera

transakcja odroczona

Przywracanie

transakcja odroczona

Dołącz

Dołączanie nie powiodło się

Autorestart

transakcja odroczona

Tworzenie bazy danych lub migawka bazy danych

Tworzenie nie powiodło się

ponowne wykonanie na dublowanie bazy danych

transakcja odroczona

Grupa plików jest w trybie offline

transakcja odroczona

Przeniesienie transakcji o stanie DEFERRED

Important noteImportant Note:

Odroczone transakcji aktywnych dziennik transakcji.wirtualny plik dziennika zawierający wszystkie transakcje, odroczone nie mogą być obcinane, aż te transakcje przenoszone są odroczone stanu.Aby uzyskać więcej informacji na temat obcinania dziennika Zobacz Transaction Log Truncation.

Do przenoszenia transakcji odroczenia stanu, w bazie danych muszą być uruchomione czysto bez błędów We/Wy.Jeśli istnieją transakcje odłożone, należy samodzielnie urządzenie źródłowe błędy We/Wy.Dostępne rozwiązania, w kolejności, w którym są zazwyczaj usiłowali, są następujące:

  • Uruchom ponownie w bazie danych.Jeśli problem miała charakter przejściowy, baza danych powinna działać bez odroczonych transakcji.

  • Jeśli transakcje zostały odłożone, ponieważ grupa plików trybu offline, należy przenieść grupa plików, w trybu online.

    Aby przełączyć z powrotem do trybu online grupa plików trybu offline, użyj następujących Transact-SQL instrukcja:

    RESTORE DATABASE database_name FILEGROUP=<filegroup_name>
    
  • przywracanie bazę danych.Po przywracanie w trybie online wszystkie transakcje, odroczone nie są rozwiązane.

    W modelu odzyskiwanie Pełny lub jest rejestrowane zbiorczej, jeśli odroczonych transakcji zostały spowodowane przez tylko kilku uszkodzonych stron, przywracanie strona online może naprawić błędy (jeżeli jest to obsługiwane).

  • Jeśli nie jesteś już wymagają grupa plików, którego stan offline powoduje, że odroczone transakcji, należy unieczynnione grupa plików trybu offline.Transakcje, które zostały odłożone, ponieważ grupa plików, w trybie offline są przenoszone odroczone stanu po unieczynnione grupa plików,.

    Important noteImportant Note:

    Nie można odzyskać unieczynnione grupa plików.

    Aby uzyskać więcej informacji zobaczDefunct Filegroups.

  • Jeśli transakcje zostały odroczone z powodu złych stron i dobrej kopia zapasowa bazy danych nie istnieje, naprawić bazę danych za pomocą w następujący sposób:

    • Najpierw wprowadzane w bazie danych do trybu awaryjnego, wykonując następujące czynności Transact-SQL instrukcja:

      ALTER DATABASE <database_name> SET EMERGENCY
      

      Aby uzyskać informacje dotyczące trybu awaryjnego Zobacz Database States.

    • Następnie należy naprawić bazę danych za pomocą opcji REPAIR_ALLOW_DATA_LOSS DBCC w jednym z następujących instrukcji DBCC: DBCC CHECKDB, DBCC CHECKALLOC, or DBCC CHECKTABLE.

      Gdy DBCC napotyka strona złych, DBCC zwalnia go i naprawia występują pokrewne błędy.Ta metoda umożliwia bazy danych można przełączyć z powrotem do trybu online fizycznie spójna.Jednak również dodatkowe dane mogą zostać utracone, dlatego należy używać tej metody w ostateczności.