Kwerendy rozproszonych i transakcji rozproszonych
The SQL Server Database Engine allows you to create links to OLE DB data sources called linked servers.Po łączenie z danymi OLE DB urządzenie źródłowe, możesz:
Wiersz odwołania ustawia ze źródłami danych OLE DB jako tabele Transact-SQL instrukcje.
- Przekazywanie poleceń do źródła danych OLE DB i dołączyć wynikowe zestawy wierszy jako tabele w Transact-SQL instrukcje.
Każdej kwerenda rozproszona można odwołać wiele serwerów połączonych i może wykonać obu aktualizacji lub operacji dla poszczególnych serwerów połączonych odczytu.Jedną kwerenda rozproszona można wykonywać operacje odczytu, niektóre serwery połączone i aktualizowanie operacji względem innych serwerów połączonych.Ogólnie rzecz biorąc Database Engine wymaga obsługi transakcji rozproszonych od odpowiedniego dostawca OLE DB, za każdym razem, gdy dane z więcej niż jednego serwer połączony prawdopodobnie mogą zostać zaktualizowane w transakcji. Stąd też typy kwerend, które są obsługiwane z połączonymi serwerami zależą od poziom wsparcia dla transakcji w dostawcy OLE DB.OLE DB definiuje dwa interfejsy opcjonalne dla zarządzania transakcjami:
ITransactonLocal obsługuje transakcje lokalne w źródle danych OLE DB.
ITransactionJoin umożliwia łączyć dostawca, transakcja rozproszona, zawierający innych menedżerów zasób.
Każdy dostawca obsługujący ITransactionJoin obsługuje również ITransactonLocal.
Jeśli w kwerenda rozproszona zostanie wykonany, gdy połączenie jest tryb automatycznego zatwierdzania, stosuje się te reguły:
Tylko operacje odczytu są dozwolone dla dostawców, którzy nie obsługują ITransactonLocal.
Wszystkie operacje aktualizacji są dozwolone dla wszystkich dostawców obsługujących ITransactonLocal.
Kontrolowanie wystąpienie Database Engine automatycznie wywołań ITransactonLocal każdego serwer połączony biorących udział w operacji aktualizacji uruchomić transakcji lokalnej.Zapisuje ono je po instrukcja prawidłowo lub ich toczy się ponownie, jeśli w instrukcja nie powiedzie się.
Jeśli kwerenda rozproszona względem rozproszony widok partycjonowany lub jest wykonywane, gdy połączenie jest w jednej transakcji bezpośrednie lub pośrednie, stosuje się te reguły:
Tylko operacje odczytu są dozwolone dla dostawców, którzy nie obsługują ITransactionJoin.Dostawców, którzy nie obsługują żadnych transakcji lub nie obsługują tylko ITransactonLocal nie może uczestniczyć w operacji aktualizacji.
Jeśli XACT_ABORT zestaw jest włączone, wszystkie operacje aktualizacji są dozwolone dla wszystkich dostawców obsługujących ITransactionJoin.Kontrolowanie wystąpienie Database Engine automatycznie wywołań ITransactionJoin każdego serwer połączony biorących udział w operacji aktualizacji w celu zarejestrowania go w transakcja rozproszona.Microsoft Koordynator transakcja rozproszona (MS DTC) następnie zapisuje je albo je toczy się po sterowania serwera wskazuje, czy transakcja jest przekazana lub wycofana.
Jeśli XACT_ABORT zestaw jest wyłączona, serwer połączony również musi obsługiwać transakcji zagnieżdżonych przed operacje aktualizacji są dopuszczalne.Transakcje zagnieżdżone są obsługiwane, gdy dostawca obsługuje telefonicznej ITransactionLocal::StartTransaction , gdy istnieje już transakcja istniejące dla danej sesja.Dzięki temu SQL Server Aby przywrócić pojedyncze instrukcje w kwerendami rozproszonymi bez wycofywanie całej transakcji.
Powyższe zasady pociąga za sobą następujące ograniczenia dla dostawców, którzy nie obsługują transakcji zagnieżdżonych: Aktualizacja operacje są dozwolone w transakcja rozproszona tylko wtedy, gdy opcja XACT_ABORT jest włączone.