Udostępnij za pośrednictwem


Transact-SQL Distributed Transactions

Transakcje rozproszone, uruchomiony w Transact-SQL ma strukturę stosunkowo proste:

  1. A Transact-SQL Wykonuje skrypt lub aplikacja połączenia Transact-SQL Instrukcja uruchamia transakcja rozproszona.

  2. Wystąpienie SQL Server Database Engine wykonując instrukcję staje się serwerem kontrolowania transakcji.

  3. Skrypt lub aplikacja wykonuje kwerendy rozproszone serwery połączone albo zdalnych procedur przechowywanych przed serwerami zdalnymi.

  4. Jak wykonywane są kwerendy rozproszone i zdalnych wywołań procedury, kontrolowanie serwer automatycznie wywołuje Microsoft Koordynator transakcja rozproszona (MS DTC), aby zarejestrować połączone i zdalne serwery w transakcja rozproszona.

  5. Gdy skrypt lub aplikacja wystawia COMMIT lub ROLLBACK instrukcja, kontrolowanie wystąpienie SQL Server wywołania MS DTC do zarządzania procesem zatwierdzanie dwufazowe lub do powiadamiania serwerów zdalnych i połączonych w celu ich transakcji wycofania.

Deklaracje wymagane języka Transact-SQL

The Transact-SQL statements controlling the distributed transactions are few because most of the work is done internally by the SQL Server Database Engine and MS DTC.Jedynym Transact-SQL w instrukcji Transact-SQL skrypt lub aplikacja są wymagane do:

  • Uruchom transakcja rozproszona.

  • wykonać kwerendy rozproszone połączone serwery lub wykonać zdalnego wywołania procedury przed serwerami zdalnymi.

  • Wywołanie standardowe Transact-SQL Instrukcje zatwierdzanie TRANSACTION, praca zatwierdzanie, ROLLBACK TRANSACTION lub ROLLBACK pracę do zrealizowania transakcji.

    Dla każdego Transact-SQL transakcja rozproszona, wystąpienie Database Engine przetwarzanie Transact-SQL skrypt lub połączenia automatycznie wywołania MS DTC do koordynowania zobowiązanie lub wycofywania transakcji.

Rozpoczynanie transakcji rozproszonych

Można rozpocząć transakcji rozproszonych w Transact-SQL w następujący sposób:

  • Uruchom jawne transakcja rozproszona, używając instrukcja BEGIN transakcja rozproszona.

    Można również wykonać kwerenda rozproszona względem serwer połączony.Wystąpienie Database Engine zostało nawiązane połączenie z wywołania MS DTC do zarządzania transakcja rozproszona z serwer połączony. Można również wywołać zdalnych procedur przechowywanych dla zdalnego wystąpienie Database Engine w ramach transakcja rozproszona.

  • W trakcie transakcji lokalnej, wykonać kwerenda rozproszona.

    Jeśli urządzenie źródłowe danych OLE DB obsługuje ITransactionJoin interfejs, transakcja jest podnoszony do transakcja rozproszona, nawet wtedy, gdy kwerenda jest kwerendą tylko do odczytu.Jeśli urządzenie źródłowe danych nie obsługuje. ITransactionJoin, dozwolone są tylko instrukcje tylko do odczytu.

  • Jeśli wykonano zestaw ON REMOTE_PROC_TRANSACTIONS i wywołuje transakcji lokalnej zdalna procedura składowana na inne wystąpienie Database Engine, transakcja lokalna jest podnoszony do transakcja rozproszona.

    The Database Engine uses MS DTC to coordinate the transaction with the remote server.Wywołań zdalnych procedur przechowywanych wykonać poza zakresem transakcji lokalnej, jeśli REMOTE_PROC_TRANSACTIONS jest ustawiona na wyłączona.Prace wykonane przez zdalnego wywoływania nie jest wycofywany ponownie, jeżeli jest przywracana transakcji lokalnej.Prace wykonane przez zdalna procedura składowana jest zaangażowana w czasie zakończeniu procedury nie, gdy transakcja lokalna jest zatwierdzona.

Opcja REMOTE_PROC_TRANSACTIONS jest opcja zgodności, która dotyczy tylko wywołań zdalnych procedura przechowywana do zdalnych serwerów zdefiniowanych przy użyciu sp_addserver.Opcja nie ma zastosowania do kwerendy rozproszone, które wykonaj procedura przechowywana serwer połączony zdefiniowane przy użyciu sp_addlinkedserver.Aby uzyskać więcej informacji na temat kwerend rozproszonych zobacz Distributed Queries.