Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Transact-SQL dağıtılmış bir işlemin başlangıcını belirtir. SQL Server kullanıldığında, dağıtık işlem Microsoft Dağıtık İşlem Koordinatörü (MS DTC) tarafından yönetilir.
- Azure SQL Managed Instance durumunda, dağıtık işlem MS DTC tarafından değil, hizmetin kendisi tarafından yönetilir. Azure SQL Database ve Azure SQL Managed Instance'daki dağıtık işlemler hakkında bilgi için Bulut veritabanları arasında dağıtılmış işlemler sayfasına bakınız.
Transact-SQL söz dizimi kuralları
Sözdizimi
BEGIN DISTRIBUTED { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable ]
[ ; ]
Arguments
transaction_name
MS DTC yardımcı programları içinde dağıtık işlemi izlemek için kullanılan kullanıcı tanımlı bir işlem adıdır. transaction_name tanımlayıcı kurallarına uymalı ve = 32 karakter olmalıdır <.
@ tran_name_variable
MS DTC araçları içinde dağıtık işlemi takip etmek için kullanılan bir işlem adını içeren kullanıcı tanımlı bir değişkenin adıdır. Değişkenin char, varchar, nchar veya nvarchar veri türüyle bildirilmesi gerekir.
Açıklamalar
SQL Server Veritabanı Motoru'nun BEGIN DISTRIBUTED TRANSACTION ifadesini çalıştırdığı örnek, işlem başlatıcısıdır ve işlemin tamamlanmasını kontrol eder. Oturum için sonraki bir COMMIT TRANSACTION veya ROLLBACK TRANSACTION bildirimi verildiğinde, kontrol eden örnek MS DTC'nin dağıtılmış işlemin tüm örnekler arasında tamamlanmasını yönetmesini ister.
İşlem düzeyinde anlık görüntü izolasyonu, dağıtık işlemleri desteklemez.
Veritabanı Motoru'nun uzak örneklerinin dağıtık bir işlemde kaydedilmesinin başlıca yolu, dağıtık işlemde zaten kayıtlı bir oturumun bağlı bir sunucuya atıfta bulunan dağıtık bir sorgu yürütmesidir.
Örneğin, BEGIN DISTRIBUTED TRANSACTION ServerA'da veriliyorsa, oturum ServerB'de depolanmış bir prosedürü ve ServerC'de başka bir depolanmış prosedürü çağırır. ServerC'de saklanan prosedür, ServerD'ye karşı dağıtık bir sorgu çalıştırır ve ardından dört bilgisayarın tamamı dağıtık işlemde yer alır. SunucuA'daki Veritabanı Motoru örneği, işlem için orijinal kontrol örneğidir.
Dağıtık Transact-SQL işlemlerde yer alan oturumlar, dağıtık işlemde açıkça kaydedilebilmesi için başka bir oturuma aktarabilecekleri bir işlem nesnesi almaz. Bir uzak sunucunun işlemi kaydetmesinin tek yolu, dağıtık bir sorgu veya uzaktan saklanan bir prosedür çağrısının hedefi olmaktır.
Dağıtık bir sorgu yerel bir işlemde yürütüldüğünde, hedef OLE DB veri kaynağı ITransactionLocal'ı destekliyorsa işlem otomatik olarak dağıtılmış bir işleme terfi edilir. Hedef OLE DB veri kaynağı ITransactionLocal'ı desteklemiyorsa, dağıtık sorguda yalnızca okunma işlemlerine izin verilir.
Dağıtık işlemde zaten kayıtlı olan bir oturum, uzak bir sunucuya referans veren uzaktan depolanmış bir prosedür çağrısı gerçekleştirir.
Bu seçenek sp_configure remote proc trans , yerel bir işlemde uzaktan depolanan prosedürlere yapılan çağrıların yerel işlemin MS DTC tarafından yönetilen dağıtık bir işleme otomatik olarak terfi ettirip terfi ettirmediğini kontrol eder. Bağlantı düzeyindeki SET seçeneği REMOTE_PROC_TRANSACTIONS ile belirlenen sp_configure remote proc transörnek varsayılan özelliğini geçersiz kılmak için kullanılabilir. Bu seçenek açıkken, uzaktan saklanan prosedür çağrısı yerel bir işlemin dağıtık bir işleme yükseltilmesine neden olur. MS DTC işlemini oluşturan bağlantı, işlemin başlatıcısı olur. COMMIT TRANSACTION bir MS DTC koordineli commit başlatır. Seçenek sp_configure remote proc trans ONURSA, yerel işlemlerdeki uzaktan saklanan prosedür çağrıları dağıtık işlemlerin bir parçası olarak otomatik olarak korunur ve uygulamalar BEGIN IŞLEM yerine BEGIN DAĞITILMIŞ IŞLEM yayımı için yeniden yazmak zorunda kalmaz.
Dağıtık işlem ortamı ve süreci hakkında daha fazla bilgi için Microsoft Dağıtık İşlem Koordinatörü dokümantasyonuna bakınız.
Permissions
Genel rolde üyelik gerektirir.
Örnekler
Bu örnek, hem Veritabanı Motorunun yerel örneğinde hem de uzak bir sunucudaki bir örnekte AdventureWorks2025 veritabanından bir adayı siler. Hem yerel hem de uzak veritabanları işlemi ya commit eder ya da geri alır.
Uyarı
MS DTC, Veritabanı Motoru örneğini çalıştıran bilgisayarda şu anda yüklü değilse, bu örnek bir hata mesajı verir. MS DTC'nin kurulumu hakkında daha fazla bilgi için Microsoft Dağıtık İşlem Koordinatörü dokümantasyonuna bakınız.
USE AdventureWorks2022;
GO
BEGIN DISTRIBUTED TRANSACTION;
-- Delete candidate from local instance.
DELETE AdventureWorks2022.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
-- Delete candidate from remote instance.
DELETE RemoteServer.AdventureWorks2022.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
GO