Udostępnij za pośrednictwem


BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)

Określa początek Transact-SQL zarządza transakcja rozproszona Microsoft Koordynator transakcja rozproszona (MS DTC).

Topic link iconKonwencje składni języka Transact-SQL

BEGIN DISTRIBUTED { TRAN | TRANSACTION } 
     [ transaction_name | @tran_name_variable ] 
[ ; ]

Argumenty

  • transaction_name
    Is a user-defined transaction name used to track the distributed transaction within MS DTC utilities.transaction_name must conform to the rules for identifiers and must be <= 32 characters.

  • @tran\_name\_variable
    Czy nazwę zmiennej użytkownika zawierające nazwę transakcji używany do śledzenia transakcja rozproszona w ramach narzędzia usługi MS DTC.Zmienna musi być zadeklarowana z char, varchar, nchar, lub nvarchar Typ danych.

Remarks

Wystąpienie SQL Server Database Engine wykonywanie BEGIN transakcja rozproszona instrukcja jest nadawcą transakcji i steruje zakończenia transakcji. Gdy kolejnych przekazywać transakcję lub instrukcja ROLLBACK TRANSACTION jest wydawane dla sesja, kontrolowanie wystąpienie żąda, czy usługa MS DTC zarządzanie zakończenia transakcji rozproszonych w wszystkich wystąpień biorących udział.

Izolacja migawka poziom transakcji nie obsługuje transakcji rozproszonych.Aby uzyskać więcej informacji zobaczZa pomocą wiersza oparte na wersji poziomy izolacji.

Podstawowy sposób zdalnego wystąpienia Database Engine jest zarejestrowany w transakcja rozproszona jest podczas sesja już zarejestrowany w transakcja rozproszona wykonuje kwerenda rozproszona odwoływania się do serwer połączony.

Na przykład jeśli instrukcji BEGIN TRANSACTION ROZPOWSZECHNIANE trzydziestoletnia została wystawiona ServerA, sesja wywołuje procedura przechowywana na ServerB i innej procedura przechowywana na ServerC.Procedura przechowywana na ServerC wykonuje kwerenda rozproszona przed ServerD, a następnie wszystkie cztery komputery uczestniczące w transakcja rozproszona.Wystąpienie Database Engine w przypadku ServerA jest pochodzących z wystąpienia kontrolowania transakcji.

Sesje w Transact-SQL transakcja rozproszona nie pobieraj przechodzą do innej sesja, aby zarejestrować transakcja rozproszona, jawnie obiektu transakcji. Jedynym sposobem na serwerze zdalnym zarejestrować transakcji, ma być celem kwerenda rozproszona lub zdalna procedura składowana wywołania.

Po wykonaniu kwerenda rozproszona w transakcji lokalnej transakcji zostanie automatycznie podwyższony do transakcja rozproszona, gdy urządzenie źródłowe danych OLE DB miejsce docelowe obsługuje ITransactonLocal.Jeśli urządzenie źródłowe danych OLE DB miejsce docelowe nie obsługuje. ITransactonLocal, w kwerenda rozproszona dozwolone są tylko operacje tylko-do-odczytu.

Sesja już zarejestrowany w transakcja rozproszona wykonuje zdalna procedura składowana wywołania odwoływania się do serwera zdalnego.

The sp_configure remote proc trans option controls whether calls to remote stored procedures in a local transaction automatically cause the local transaction to be promoted to a transakcja rozproszona managed by MS DTC.Opcja zestaw poziom połączeń REMOTE_PROC_TRANSACTIONS może być używana do zmiany ustawień domyolnych wystąpienie ustanowionych przez sp_configure zdalnego proc trans.Ta opcja jest ustawiona, zdalna procedura składowana wywołanie powoduje, że być promowany do transakcja rozproszona transakcji lokalnej.Połączenie, które tworzy transakcję MS DTC staje się autora dla transakcji.zatwierdzanie TRANSACTION inicjuje usługi MS DTC skoordynowane zatwierdzanie transakcji.Jeśli sp_configure zdalnego proc trans opcji jest włączone, bez konieczności ponownego pisania aplikacji, aby wyraźnie wystawić BEGIN transakcja rozproszona, zamiast instrukcji BEGIN TRANSACTION automatycznie są chronione jako część transakcja rozproszona wywołań zdalnych procedura przechowywana w transakcji lokalnych.

Aby uzyskać więcej informacji na temat środowiska transakcja rozproszona i procesów, zobacz temat Microsoft Dokumentacja Koordynator transakcja rozproszona.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

W tym przykładzie powoduje usunięcie kandydat z AdventureWorks Baza danych na obu lokalne wystąpienie Database Engine i wystąpienia na serwerze zdalnym. Baz zarówno lokalnych i zdalnych danych będzie przekazać lub wycofać transakcji.

Uwaga

Usługa MS DTC nie jest obecnie zainstalowany na komputerze, na którym uruchomiono wystąpienie Database Engine, w tym przykładzie generuje komunikat o błędzie. Aby uzyskać więcej informacji dotyczących instalowania usługi MS DTC Zobacz Koordynator transakcja rozproszona firmy Microsoft można znaleźć w dokumentacji.

USE AdventureWorks;
GO
BEGIN DISTRIBUTED TRANSACTION;
-- Delete candidate from local instance.
DELETE AdventureWorks.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;
-- Delete candidate from remote instance.
DELETE RemoteServer.AdventureWorks.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
GO