Forum

C# TransactionScope...
 
Bildirimler
Hepsini Temizle

C# TransactionScope Sorunu

Gürkan
(@omer)
Üye

Merhaba c# tarafında 2 farklı veri tabanı üzerinde işlem yapılırken olası hatalar durumunda işlemlerin geri alınmasını sağlarken 

"Temel alınan işlem yöneticisiyle iletişim kurulamadı" hatası almaktayım. Konu ile alakalı yardımcı olur musunuz?

 

Kodlar

using (TransactionScope sc = new TransactionScope())
{
using (SqlConnection con = new SqlConnection("Server=192.168..."))
{
con.Open();
using (SqlCommand consorgu = new SqlCommand())
{
consorgu.Connection = con;
consorgu.CommandText = @"INSERT INTO ....";

using (SqlConnection con2 = new SqlConnection("Server=192.168...."))
{
con2.Open();
using (SqlCommand consorgu2 = new SqlCommand())
{
consorgu2.Connection = con2;
consorgu2.CommandText = @"INSERT INTO ....";

try
{
consorgu.ExecuteNonQuery();
consorgu2.ExecuteNonQuery();
sc.Complete();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
}
}
}
}

Bu konu 4 ay önce 2 defa Gürkan tarafından düzenlendi
Alıntı
Konu başlatıcı Gönderildi : 15/01/2022 15:47

Serkan Ateş
(@SerkanAtes)
Üye

Merhaba;

Veritabanları aynı instance altında mı?

Ayrıca bknz: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

 

CevapAlıntı
Gönderildi : 15/01/2022 16:54

Gürkan
(@omer)
Üye

@SerkanAtes Bey merhaba, evet veritabanları aynı instance altında. ConString'ler tamamıyla aynı sadece veri tabanı isimleri farklı.

CevapAlıntı
Konu başlatıcı Gönderildi : 15/01/2022 17:16

Serkan Ateş
(@SerkanAtes)
Üye

Aşağıdaki makale yardımcı olacaktır. Kolay gelsin.

https://docs.microsoft.com/en-gb/dotnet/api/system.transactions.transactionscope?view=net-6.0

CevapAlıntı
Gönderildi : 15/01/2022 17:54

Gürkan
(@omer)
Üye

@SerkanAtes bey yardım ve destekleriniz için çok teşekkür ederim fakat göndermiş olduğunuz linki daha öncede de incelemiştim ama bir sonuç alamadım hata aynı şekilde devam ediyor.

CevapAlıntı
Konu başlatıcı Gönderildi : 15/01/2022 18:24

Serkan Ateş
(@SerkanAtes)
Üye

Merhaba tekrar;

Aslında örnek tam olarak sizin talebinizi yapıyor. Makalenin açıklama alanlarında bu durumu detaylı olarak belirtmişler.

"This function takes arguments for 2 connection strings and commands to create a transaction involving two SQL Servers. It returns a value > 0 if the transaction is committed, 0 if the transaction is rolled back. To test this code, you can connect to two different databases on the same server by altering the connection string, or to another 3rd party RDBMS by altering the code in the connection2 code block."

Bence sıfırdan bir proje oluşturun. Örneği mevcut sql servisinizde yeni oluşturduğunuz test veritabanları üzerinde test projenizle uygulamaya çalışın. Böylece sorunun kaynağını daha iyi analiz edebilirsiniz. Eğer test sisteminde sorun yaşamıyorsanız ancak mevcut projenizde problem devam ediyorsa bu durumda projeye özel danışmanlık gerekir ki buradan bunu sağlayamayız.

İyi çalışmalar.

 

CevapAlıntı
Gönderildi : 16/01/2022 23:47

Paylaş: