Udostępnij za pośrednictwem


Distributed Transactions (Database Engine)

Transakcje rozproszone rozciągać się na dwóch lub większej liczby serwerów, znane jako menedżerów zasób.Zarządzanie transakcji musi być skoordynowane pomiędzy menedżerów zasób przez składnik serwera o nazwie Menedżer transakcji.Każde wystąpienie SQL Server Database Engine może działać jako Menedżer zasób w transakcjach rozproszonych, które są koordynowane przez menedżerów transakcji, takich jak Microsoft Koordynator transakcja rozproszona (MS DTC) lub innych menedżerów transakcji, które obsługują specyfikację Otwórz XA grupy dla rozpowszechniane przetwarzania transakcji. Aby uzyskać więcej informacji zobacz dokumentację usługi MS DTC.

Transakcja w jedno wystąpienie Database Engine rozciągające się dwa lub więcej baz danych jest faktycznie transakcja rozproszona. Wystąpienie wewnętrznie zarządza transakcja rozproszona, do użytkownika, działa jako transakcji lokalnej.

W aplikacji, jest zarządzany transakcja rozproszona znacznie taka sama, jak transakcji lokalnej.Po zakończeniu transakcji aplikacja żąda transakcji być przekazana lub wycofana.Transakcji rozproszonych muszą być zarządzane przez Menedżera transakcji, aby zminimalizować ryzyko, że niektóre menedżerów zasób pomyślnie zatwierdzanie, podczas gdy inne osoby wykonać wycofanie transakcji może spowodować awarię sieci inaczej.Można to osiągnąć, zarządzając proces zatwierdzania w dwóch fazach (fazy przygotowania i w fazie zatwierdzania), który jest znany jako zatwierdzanie dwufazowe (2PC).

  • Przygotowanie fazy
    Kiedy Menedżer transakcji odbierze żądanie zatwierdzanie, wysyła polecenie przygotowania do wszystkich menedżerów zasób biorących udział w transakcji.Wszystkie elementy wymagane do przygotowania trwałe transakcji jest następnie każdego Menedżera zasób, a wszystkie bufory posiadających obrazów dziennika transakcji są opróżniane na dysku.Jak każdy Menedżer zasób zostanie wykonane w fazie przygotowania, zwraca sukces lub porażkę przygotowania do Menedżera transakcji.

  • Przekaż fazy
    W przypadku otrzymania Menedżer transakcji pomyślne przygotowuje ze wszystkich menedżerów zasób, wysyła polecenia zatwierdzanie do każdego Menedżera zasób.Menedżerowie zasób może następnie wykonać zatwierdzanie.Jeśli raport wszystkich menedżerów zasób pomyślne zatwierdzanie, Menedżer transakcji wysyła następnie powiadomienie sukcesu do aplikacji.Jeśli którykolwiek z menedżerów zasób zgłoszony błąd do przygotowania, Menedżer transakcji wysyła polecenie wycofanie do każdego Menedżera zasób i wskazuje błąd transakcji do aplikacji.

Database Engine aplikacje można albo zarządzać transakcje rozproszone przez Transact-SQL lub interfejsu API bazy danych.