SqlException: Deadlock

Habe ich diese zwei Ausnahmen werden generiert, wenn ich versuche, Daten aus SQL-Datenbank in C#:

System.Daten.SqlClient.SqlException: Transaktion (Prozess-ID 97) befand sich auf sperren von Ressourcen mit einem anderen Prozess und wurde als Deadlockopfer ausgewählt.

ODER

System.Daten.SqlClient.SqlException: Transaktion (Prozess-ID 62) befand sich auf sperren von Ressourcen mit einem anderen Prozess und wurde als Deadlockopfer ausgewählt.

ODER

System.Daten.SqlClient.SqlException: Transaktion (Prozess-ID 54) befand sich auf sperren von Ressourcen mit einem anderen Prozess und wurde als Deadlockopfer ausgewählt. Führen Sie erneut die Transaktion.

dies ist der code:

 using (SqlConnection con = new SqlConnection(datasource))
 {
    SqlCommand cmd = new SqlCommand("Select * from MyTable Where ID='1' ", con);
    cmd.CommandTimeout = 300;
    con.Open();
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adapter.Fill(ds);
    con.Close();
    return ds.Tables[0];
 }

Diese passiert jedes mal.

Irgendwelche Ideen auf, wie diese gelöst werden können?

  • Hast du diese Ausnahme einmal oder passiert das jedes mal, wenn Sie versuchen?
  • Konnte Sie zeigen, dass Ihre Abfrage?
  • Diese hapend jedes mal, wenn ich versuche.
  • Meine Abfrage: Select * From MyTable Where PRODUCT_ID = '1'
  • Es muss noch andere Abfragen laufen zur gleichen Zeit, das ist, warum es deadlocks. Zwei oder mehr Abfragen wollen, auf die gleichen Daten zugreifen. Wir müssen sehen, alle Abfragen, die ausgeführt werden, nicht nur die eine, wird die deadlock-Opfer.
  • Sie nicht bekommen kann ein deadlock aus einer Abfrage so. Es erfordert eine read-Sperre auf 1 Zeile 1 Tabelle. Auch wenn ein anderer Prozess das lock, es würde gewartet haben, glücklich bis ans Zeitüberschreitung der Anforderung. Um eine Sackgasse, die in der Regel Process1 Sperre Ein und wartet auf lock B; während Prozess2 Sperre B und wartet auf lock-A. Es muss einige andere Abfragen beteiligt. Führen Sie den Sql Server Profiler (msdn.microsoft.com/en-us/library/ms187929.aspx) und zu überwachen, welche Suchanfragen ausführen, die auf Ihre Datenbank.
  • Mehr Profiler und deadlock-Analyse links: (1) support.microsoft.com/default.aspx?scid=kb;en-us;832524 (2) msdn.microsoft.com/en-us/library/ms188246.aspx (3) msdn.microsoft.com/en-us/library/ms190465.aspx
  • Jeff Atwood hatte die gleiche Ausnahme einer Weile zurück: Coding Horror: Festgefahren!. Sein Artikel könnte helfen 🙂

InformationsquelleAutor Harold SOTA | 2010-11-30
Schreibe einen Kommentar