Dağıtılmış Hareket (Transact-SQL) başlamak

Başlangıcını belirtir bir Transact-SQL dağıtılmış işlem tarafından yönetilen Microsoft Dağıtılmış İşlem Düzenleyicisi (ms dtc).

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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

Bağımsız değişkenler

  • transaction_name
    Kullanıcı tanımlı hareketin adı ' % s'hareketi dağıtılmış işlem içinde ms dtc yardımcı programlarını izlemek için kullanılır.transaction_nametanıtıcı kurallarına uyması gerekir ve olmalıdır <= 32 karakter.

  • @tran_name_variable
    ' % S'hareketi dağıtılmış işlem içinde ms dtc yardımcı programları izlemek için kullanılan bir işlem adını içeren kullanıcı tanımlı bir değişken adını.Değişken ile bildirilmesi gerekir bir char, varchar, nchar, veya nvarchar veri türü.

Açıklamalar

örnek SQL Server Veritabanı Altyapısı Dağıtılmış BEGIN TRANSACTION deyim yürütme hareket kaynağı olduğunu ve kontrol tamamlama hareket.' % S'oturum oturumiçin bir sonraki hareket TAMAMLAMA veya rollback İŞLEMİNİ deyim kesilirken, ms dtc tamamlama dağıtılmış işlem tüm örneklerini katılan yönettiklerini denetleme örnek ister.

İşlemdüzey anlık görüntü yalıtım dağıtılmış işlemleri desteklemiyor.Daha fazla bilgi için, bkz. Satır sürüm oluşturma tabanlı yalıtım düzeyleri kullanma.

Birincil yol uzak örneklerini Veritabanı Altyapısı Kayıtlı oldukları zaten ' % s'hareket dağıtılmış işlem içinde kayıtlı bir oturum bağlantılı sunucubaşvuran bir dağıtılmış sorgu yürütüldüğünde bir dağıtılmış işlem mı.

Dağıtılmış İşlem başlatmak verilmiş olduğu, örneğin, ServerA, oturum üzerinde bir saklı yordam çağırır ServerB ve başka bir saklı yordam ServerC.saklı yordam ServerC karşı dağıtılmış sorgu yürütür ServerD, ve sonra tüm dört bilgisayar dağıtılmış işlemilgilidir.örnek Veritabanı Altyapısı , ServerA kaynak denetimi örnek için hareket.

Oturuma katılan Transact-SQL Dağıtılmış hareketleri başka bir oturum için açıkça ' % s'hareket dağıtılmış işlemiçinde enlist kendisine iletebilir, bir transaction nesnesi alır değil.Hareket içinde kayıtlı bir uzak sunucu için tek yolu, hedef bir dağıtılmış sorgu veya uzak saklı yordam çağrısı yapılması.

Yerel işlem dağıtılmış sorgu yürütüldüğünde, hedef ole DB veri kaynak destekliyorsa hareketi otomatik olarak dağıtılmış işlem yükseltilir ITransactionLocal.hedef ole DB veri kaynak desteklemediği, ITransactionLocal, yalnızca salt okunur işlemlere izin verilen dağıtılmış sorgu.

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

Sp_configure uzak proc trans uzak saklı yordamlar yerel işlem çağrıları otomatik olarak ms dtc tarafından yönetilen bir dağıtılmış işlem görmeleri yerel işlem neden olup olmadığını kontrol eder seçeneği.REMOTE_PROC_TRANSACTIONS tarafından kurulan örnek varsayılan geçersiz kılmak için kullanılabilir bağlantı -düzey Ayarla seçeneği sp_configure uzak proc trans.Bu seçeneği küme ile uzak saklı yordam çağrısı dağıtılmış işlemyükseltilmesi yerel işlem neden olur.ms dtc hareketi oluşturan bağlantı hareketin kaynağı haline gelir.İŞLEM tamamlanmadan düzenlenir ms dtc yürütmeişlemini başlatır.Sp_configure uzak proc trans seçeneği on, yerel işlemlerde uzak saklı yordam çağrıları otomatik olarak korunmasını dağıtılmış hareketleri bir parçası olarak BAŞLAYAN dağıtılmış hareket BEGIN TRANSACTION yerine özellikle verecek uygulamaların yeniden yazmak zorunda kalmadan.

dağıtılmış işlem ortamı ve işlem hakkında daha fazla bilgi için bkz: Microsoft Distributed Transaction Coordinator belgelerine.

İzinler

Üyelik gerektiren public rolü.

Örnekler

Bu örnek, bir Adayı'ndan siler AdventureWorks2008R2 hem yerel örnek veritabanını Veritabanı Altyapısı ve bir örnek uzak bir sunucu.Hem yerel hem de uzak veritabanları yürütme veya geri almak hareket eder.

Not

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

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