BEGIN dağıtılmış hareket (Transact-sql)

Başlangıcını belirtir bir Transact-SQLDağıtılmış hareket tarafından yönetilen MicrosoftDistributed Transaction Coordinator (ms dtc).

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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

Bağımsız değişkenler

  • transaction_name
    Bir kullanıcı tanımlı hareketin adı, dağıtılmış hareket içinde ms dtc yardımcı programlarını izlemek için kullanılır. transaction_nametanımlayıcıları kuralları uyması gerekir ve olmalıdır <= 32 karakter.

  • @tran\_name\_variable
    Dağıtılmış hareket içinde ms dtc yardımcı programlarını izlemek için kullanılan bir işlem adını içeren kullanıcı tanımlı bir değişken adı. Değişken ile bildirilmeli bir char, varchar, nchar, ya nvarcharveri türü.

Açıklamalar

Örneğini SQL Server Veritabanı AltyapısıDağıtılmış hareket BEGIN deyimi yürütme ve hareketin orijinal olduğunu ve hareketin tamamlanma denetler. Bir sonraki TRANSACTION COMMIT veya rollback TRANSACTION deyimi oturum için kesilirken, denetleme örneği ms dtc dağıtılmış işlem tamamlandığında tüm ilgili örnekleri yönetmek ister.

İşlem düzeyinde anlık yalıtım dağıtılmış işlemleri desteklemiyor.

Birincil yol uzak örnekleri Veritabanı Altyapısıiçinde kayıtlı bir oturumu zaten dağıtılmış hareket içinde kayıtlı bir bağlı sunucu başvuran bir dağıtılmış sorgu yürütüldüğünde bir dağıtılmış hareket nedir.

Örneğin, üzerinde dağıtılmış hareket BEGIN veriliyorsa, ServerA, oturum saklı yordamı çağırır ServerBve başka bir saklı yordam ServerC. Saklı yordam ServerCbir dağıtılmış sorgu çalıştırır ServerD, ve sonra tüm dört bilgisayar dağıtılmış işleme katılan. Örneğini Veritabanı Altyapısıüzerine ServerAhareket için kaynak kontrol örneği.

Oturumları yer Transact-SQLDağıtılmış hareketleri onlar geçmek için o açıkça dağıtılmış hareket içinde askere başka bir oturuma bir transaction nesnesi alınamadı. Hareket listeleme uzak sunucu için tek yolu bir dağıtılmış sorgu veya uzaktan saklı yordam çağrısı hedef olmaktır.

Yerel bir işlem bir dağıtılmış sorgu yürütüldüğünde, destekler hedef ole db veri kaynağı izin verirseniz hareketi otomatik olarak bir dağıtılmış işlem yükseltilir ITransactionLocal. Hedef ole db veri kaynağı desteklemiyor, ITransactionLocal, yalnızca salt okunur işlemlere dağıtılmış sorguyu verilir.

Zaten dağıtılmış hareket içinde kayıtlı bir oturumu uzaktan sunucu başvuran bir uzak saklı yordam çağrısı yapar.

Sp_configure uzak yordam hareketleri uzak saklı yordamlar Yerel işlem çağrıları otomatik olarak ms dtc tarafından yönetilen bir dağıtılmış hareket yükseltilmesi Yerel işlem neden olup denetimleri seçme hakkı. REMOTE_PROC_TRANSACTIONS tarafından kurulan örnek varsayılan değerleri geçersiz kılmak için kullanılabilir bağlantı düzeyi ayarlama seçeneği sp_configure uzak yordam hareketleri. Bu seçenek ayarlamak, uzaktan saklı yordam çağrısı bir dağıtılmış işlem yükseltilmesi yerel bir işlem neden olur. ms dtc hareketi oluşturan bağlantı Hareketin kaynağı olur. COMMIT TRANSACTION bir ms dtc koordine tamamlama işlemini başlatır. Eğer sp_configure uzak yordam hareketleri seçeneği'tır, uzak saklı yordam çağrıları yerel hareketleri otomatik olarak korunmaktadır dağıtılmış hareketleri bir parçası olarak dağıtılmış hareket BEGIN BEGIN TRANSACTION yerine özellikle verecek uygulamaların yeniden yazmak zorunda kalmadan.

Dağıtılmış işlem ortamı ve süreci hakkında daha fazla bilgi için bkz: MicrosoftDistributed Transaction Coordinator belgelerine.

İzinler

Üyelik publicrolü.

Örnekler

Bu örnek, bir adayı siler AdventureWorks2012veritabanı üzerinde hem yerel örneği Veritabanı Altyapısıve uzak sunucuda örneği. Yerel ve uzak veritabanlarına işlemek veya hareket geri.

[!NOT]

ms dtc örneğini çalıştıran bilgisayarda yüklü sürece Veritabanı Altyapısı, bu örnek, bir hata iletisi üretir. ms DTC'yi yükleme hakkında daha fazla bilgi için Microsoft Distributed Transaction Coordinator belgelerine bakın.

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

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

Ayrıca bkz.

Başvuru

BEGIN TRANSACTION (Transact-SQL)

TAMAMLAMA hareket (Transact-sql)

COMMIT work (Transact-sql)

rollback TRANSACTION (Transact-sql)

rollback work (Transact-sql)

HAREKET (Transact-sql) Kaydet