dağıtılmış işlem (Transact-SQL) BEGIN
Başlangıcını belirtir bir Transact-SQL Dağıtılmış işlem tarafından yönetiliyor Microsoft Dağıtılmış işlem Eşgüdümcüsü (MS DTC).
BEGIN DISTRIBUTED { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable ]
[ ; ]
Bağımsız değişkenler
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
Kullanıcı tanımlı bir değişkenin adını, dağıtılmış işlem MS DTC yardımcı programlar içinde izlemek için kullanılan bir işlem adını içeren iş.Değişkeni ile bildirilmeli bir char, varchar, nchar, veya nvarchar Veri Türü.
Remarks
örnek SQL Server Database Engine BEGIN yürütülüyor dağıtılmış işlem ekstresi, hareket kaynağı olan ve hareketin tamamlanma denetler. Bir sonraki zaman işlemi yürütme veya ROLLBACK TRANSACTION deyim oturumu için verilir, bu denetleme örneği, MS DTC dağıtılmış işlem yürütme tüm ilgili örnekleri arasında yönetmek, ister.
Işlem düzeyinde anlık görüntü görüntü yalıtım dağıtılmış işlemleri desteklemiyor.Daha fazla bilgi için bkz:Satır Güncelleştirme tabanlı yalıtım düzeyleri kullanma.
Birincil yol uzak örneklerini Database Engine kayıtlı zaten dağıtılmış işlem içinde kayıtlı oturum bağlantılı sunucu başvuran dağıtılmış sorgu çalıştırıldığında dağıtılmış bir hareketidir.
Örneğin, BEGIN dağıtılmış işlem ServerA üzerinde verilen, oturum saklı yordam SunucuB üzerinde çağırır ve başka bir saklı yordamı ServerC.saklı yordam ServerC üzerinde ServerD karşı dağıtılmış sorgu yürütür ve sonra tüm dört bilgisayar dağıtılmış işleme katılan.örnek Database Engine ServerA üzerinde hareket için kaynak denetim örnek.
Katılan oturumları Transact-SQL Dağıtılmış işlemler bir işlem nesnesi için açıkça dağıtılmış işlem kaydetmek için başka bir oturuma geçirebilirsiniz alma. Hareket listeleme uzaktaki bir sunucuyu tek yolu, dağıtılmış sorgu işleminin hedefi olacak veya uzak saklı yordam çağrısı.
Yerel bir işlem içinde dağıtılmış sorgu çalıştırıldığında, işlem otomatik olarak bir dağıtılmış işlem için yükseltildikten OLE DB veri hedef kaynak destekler Itransactionlocal.Hedef OLE DB veri kaynağı desteklemediği için Itransactionlocal, yalnızca salt okuma işlemleri, dağıtılmış sorguda izin verilir.
Zaten dağıtılmış işlem içinde kayıtlı oturum gerçekleştiren bir uzak saklı yordam uzaktaki bir sunucuyu başvuran arayın.
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 dağıtılmış işlem managed by MS DTC.Bağlantı düzey küme seçenek REMOTE_PROC_TRANSACTIONS tarafından oluşturulmuş örnek varsayılan geçersiz kılmak için kullanılabilir: Uzak yordam TRNSFR sp_configure.Bu seçeneği ayarlamak, uzak saklı yordam çağrısı, dağıtılmış işlem yükseltilmesi yerel bir işlem neden olur.MS DTC hareketi oluşturan bağlantı Hareketin kaynağı olur.yürütme TRANSACTION eşgüdümlü bir MS DTC yürütme başlatır.If the sp_configure remote proc trans option is ON, remote saklı yordam calls in local transactions are automatically protected as part of distributed transactions without having to rewrite applications to specifically issue BEGIN dağıtılmış işlem instead of BEGIN TRANSACTION.
Dağıtılmış işlem ortamı ve işlemi hakkında daha fazla bilgi için bkz: Microsoft Dağıtılmış işlem Eşgüdümcüsü belgeleri.
İzinler
Üyelik gerektirir Ortak roldür.
Örnekler
Bu örnekte, gelen bir aday silinir AdventureWorks veritabanı örneğinde hem yerel Database Engine ve bir uzak sunucuda örnek. Yerel ve uzak veritabanları, yürütme ya da hareket geri almak almak.
Not
MS DTC örneğini çalıştıran bilgisayarda yüklü olan sürece Database Engine, bu örnek, bir hata iletisi üretir. MS DTC yükleme hakkında daha fazla bilgi için Microsoft dağıtılmış işlem Coordinator belgelerine bakın.
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