Udostępnij za pośrednictwem


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.

See Also

Concepts