Sql Server Distributed Transaction Kullanımı

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda distributed transaction konusunu anlatacağım. Hadi başlayalım !
Table of Contents
SQL Server’da distributed transactions, birden fazla veritabanı arasında yapılan transaction işlemlerini ifade eder. Distributed transactions, bir veritabanındaki değişikliklerin, diğer veritabanlarındaki değişikliklerle birlikte işlenmesine olanak sağlar. Bu sayede, veritabanları arasındaki tutarlılığı ve bütünlüğü korumak mümkün olur. Bu makalede, SQL Server’da distributed transactions kullanımı ve örneklerini ele alacağız.
Distributed Transaction İşlemi Nedir?
Distributed transaction işlemi, iki veya daha fazla veritabanı arasında gerçekleştirilen işlemlerin tamamını, tek bir transaction olarak işleme almayı ifade eder. Bu sayede, birden fazla veritabanında yapılan işlemlerin birbirine bağımlı hale gelmesi sağlanır. Örneğin, bir işlemde bir veritabanındaki bir tabloda yapılacak değişiklik, diğer veritabanlarındaki ilgili tablolarda da yapılabilir.
Distributed Transaction Kullanımı
SQL Server’da distributed transaction kullanımı için, öncelikle MSDTC (Microsoft Distributed Transaction Coordinator) servisi etkinleştirilmelidir. MSDTC servisi, birden fazla veritabanı arasında yapılan işlemlerin koordinasyonunu sağlar. MSDTC servisi, Windows Servisleri Yöneticisi’nde (services.msc) bulunabilir.
Distributed transaction kullanımı için, BEGIN DISTRIBUTED TRANSACTION komutu kullanılır. Bu komut, bir distributed transaction işlemini başlatır. Bu işlem sırasında, tüm veritabanlarının işlemi tamamlayabilmesi için, COMMIT TRANSACTION veya ROLLBACK TRANSACTION komutları kullanılmalıdır. Aksi takdirde, tutarlılık ve bütünlük sorunları yaşanabilir.
Distributed transaction işlemi, aşağıdaki adımlarla gerçekleştirilir:
- MSDTC servisi etkinleştirilir.
- İlk olarak, bir transaction başlatılır.BEGIN DISTRIBUTED TRANSACTION
- İşlem gerçekleştirilir. Bu işlem, birden fazla veritabanında yapılabilir.
- İşlem tamamlanır.
- COMMIT TRANSACTION veya ROLLBACK TRANSACTION komutları kullanılarak, işlem sonlandırılır. Bu komutlar, tüm veritabanlarının işlemi tamamlamasını sağlar.
Örnekler
Aşağıda, SQL Server’da distributed transaction kullanımına yönelik örnekler verilmiştir.
Örnek 1: İki Veritabanı Arasında Distributed Transaction İşlemi
Bu örnekte, “Test1” ve “Test2” adında iki farklı veritabanı üzerinde bir distributed transaction işlemi gerçekleştirilmiştir. İlk olarak, bir transaction başlatılmıştır. Daha sonra, her iki veritabanında yapılacak olan işlemler sırasıyla gerçekleştirilmiştir. Son olarak, COMMIT TRANSACTION komutu kullanılarak işlem tamamlanmıştır.
BEGIN DISTRIBUTED TRANSACTION;
-- Test1 veritabanındaki bir tabloda değişiklik yapılacak
UPDATE Test1.dbo.Table1 SET Column1 = 'Değer1';
-- Test2 veritabanındaki bir tabloda değişiklik yapılacak
UPDATE Test2.dbo.Table2 SET Column2 = 'Değer2';
COMMIT TRANSACTION;
Örnek 2: Distributed Transaction İşlemi Sırasında Hata Oluşması Durumu
Bu örnekte, “Test1” ve “Test2” adında iki farklı veritabanı üzerinde bir distributed transaction işlemi gerçekleştirilmiştir. İlk olarak, bir transaction başlatılmıştır. Daha sonra, her iki veritabanında yapılacak olan işlemler sırasıyla gerçekleştirilmiştir. Ancak, Test2 veritabanındaki işlem sırasında bir hata oluşmuştur. Bu durumda, ROLLBACK TRANSACTION komutu kullanılarak işlem geri alınmıştır.
BEGIN DISTRIBUTED TRANSACTION;
-- Test1 veritabanındaki bir tabloda değişiklik yapılacak
UPDATE Test1.dbo.Table1 SET Column1 = 'Değer1';
-- Test2 veritabanındaki bir tabloda değişiklik yapılacak
UPDATE Test2.dbo.Table2 SET Column2 = 'Değer2'; -- Burada bir hata oluşabilir
ROLLBACK TRANSACTION;
Bu örneklerde, SQL Server’da distributed transaction kullanımı ve örnekleri ele alınmıştır. Bu işlem, birden fazla veritabanı arasında yapılan işlemlerin birbirine bağımlı hale getirilmesini sağlar ve tutarlılık ve bütünlüğün korunmasına olanak sağlar.
Örnek 3: Distributed Transaction İşlemi İçinde SAVE TRANSACTION Kullanımı
Bu örnekte, “Test1” ve “Test2” adında iki farklı veritabanı üzerinde bir distributed transaction işlemi gerçekleştirilmiştir. İlk olarak, bir transaction başlatılmıştır. Daha sonra, her iki veritabanında yapılacak olan işlemler sırasıyla gerçekleştirilmiştir. Ancak, Test2 veritabanındaki işlem sırasında bir hata oluşmuştur. Bu durumda, SAVE TRANSACTION komutu kullanılarak, yapılan işlemin bir kısmı geri alınmış ve işlem devam ettirilmiştir.
BEGIN DISTRIBUTED TRANSACTION;
-- Test1 veritabanındaki bir tabloda değişiklik yapılacak
UPDATE Test1.dbo.Table1 SET Column1 = 'Değer1';
-- Test2 veritabanındaki bir tabloda değişiklik yapılacak
SAVE TRANSACTION MySavepoint;
UPDATE Test2.dbo.Table2 SET Column2 = 'Değer2'; -- Burada bir hata oluşabilir
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION MySavepoint;
PRINT 'Test2 veritabanında hata oluştu';
END;
-- Test2 veritabanındaki diğer bir tabloda değişiklik yapılacak
UPDATE Test2.dbo.Table3 SET Column3 = 'Değer3';
COMMIT TRANSACTION;
Bu örnekte, SAVE TRANSACTION komutu kullanılarak, yapılan işlemin bir kısmı geri alınmış ve işlem devam ettirilmiştir. Bu durumda, işlemin geri alınan kısmının tekrar yapılması gerekebilir.
Sonuç
SQL Server’da distributed transaction, birden fazla veritabanı arasında yapılan işlemlerin birbirine bağımlı hale getirilmesini sağlar ve tutarlılık ve bütünlüğün korunmasına olanak sağlar. İşlemin başlatılması, veritabanı bağlantılarının açılması, her bir veritabanı üzerinde yapılacak olan işlemlerin gerçekleştirilmesi, işlem sonlandırma komutlarının kullanımı, hata yönetimi ve geri alma işlemleri gibi konular, SQL Server’da distributed transaction kullanımı sırasında dikkat edilmesi gereken noktalardır. Bu örnekler, SQL Server’da distributed transaction kullanımı konusunda fikir sahibi olmak isteyenler için yararlı olabilir.
Evet Sql Server’da distributed transaction kullanımı bu şekilde olmakta. Tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.