Ich bin nicht in der Lage, eine deadlock_xml von Azure SQL Server V12 zu verstehen. Hier ist die grafische Darstellung (die mit der zugrunde liegenden XML konsistent ist):SQL Server Deadlock-Grafik: bitte erläutern
So ist der rhs Prozess eine Update-Sperre und der LHS Prozess ausgegeben hat, die auch eine Update-Sperre auf derselben Ressource will , muss warten.
Dann fordert der rhs-Prozess eine exklusive Sperre für die gleiche Ressource an, die anscheinend aufgrund einer Update-Sperre des lhs-Prozesses blockiert ist (warum? Weil sie einen angefordert hat ??!).
Meine Frage:
Warum der rhs Prozess können die U-Sperre auf eine X-Sperre nicht beschränken?
Ich versuche, dies auf einem hohen Niveau zu verstehen, aber doch sind hier die Besonderheiten:
Beide Prozesse liefen die gleiche sp
Die sp führt eine Upsert op : Einfügen, wo nicht existiert (Auswählen ...); if @@ ROWCOUNT = 0 Update ...
- Die Transaktionen waren serialisierbar.
@Shungo Vielen Dank für Ihre Antwort! Es ist mir jetzt klar. Ich war naiv genug, zu erwarten, dass man sich auf eine logische statt auf eine physische Ebene einsperrt. Zusammenführen mit Isolationsstufe "serialisierbar" ist in der Tat die Lösung für mein Problem upsert.Leider habe ich nicht genug rep Ihre Antwort öffentlich zu aktualisieren. – PBof