🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / Deadlock hatasının çözümü Transaction (Process ID 76) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.

1-) C# RMOS - Deadlock hatasının çözümü Transaction (Process ID 76) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.

 

 

Deadlock hatasının çözümü Transaction (Process ID 76) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction

 

 

1. ADIM AÇIKLAMA

 

Eğer deadlocked hatası alırsan bir saniye bekle ve tekrar dene. %99 ikinci denemede hata vermeyecektir. ama yinede max 10 kere denesin yine hata verirse deadlock hatası diye uyarı versin. Bu işlem ile tam çözüm olmuyorsa 1 saniye beklemeyi arttırabiliriz. Eğer halen hata veriyorsa SQL PROFİLER'i dinleyerek gerekli indexleme veya SQL optimizasyonu veya programda bir mantık yanlış kurgulanmıştır. Onları düzeltmeniz lazımdır.

ek olarak 1 saniye bekle demeyedebiliriz. deneme sayısını 20 ye çıkarabilirsiniz. veya 200ms gibi rakamlarla kendiniz oynayabilirsiniz.

 

2. ADIM KOD BLOĞU

     

 

 

static int denemeSayisi = 50;

static int beklemeSuresi = 200; // mili saniye cinsinden

 

public static bool execcmdRYeni(String cmds)

        {

            for (int i = 0; i <= denemeSayisi ; i++)

            {

                try

                {

                    if (conn.State != ConnectionState.Closed)

                    {

                        conn.Close();

                    }

                    conn.Open();

                    cmd = new SqlCommand(cmds, conn);

                    cmd.CommandTimeout = 0;

                    cmd.ExecuteNonQuery();

                    conn.Close();

                    return true;

                }

                catch (Exception ex)

                {

                    if (ex.Message.Contains("was deadlocked on lock"))

                    {

                        Thread.Sleep(beklemeSuresi);

                        continue;

                    }

                    else

                    {

                        MessageBox.Show(ex.Message);

                        return false;

                    }

                }

            }

            MessageBox.Show("Deadlock Hatası");

            return false;

        }     

      

 

 2022 Eylül 28 Çarşamba
 508