Ich habe eine Windows Azure-Rolle, die aus zwei Instanzen besteht. Hin und wieder scheitert eine Transaktion mit einem SqlException
mit dem folgenden Text
Transaktion (Prozess-ID N) wurde bei Sperrressourcen mit einem anderen Prozess blockiert und wurde als Deadlock-Opfer ausgewählt. Führen Sie die Transaktion erneut aus.
Nun habe ich eine Weile gegoogelt und diesen Beitrag zum Identifizieren von Deadlocks mithilfe von SQL Server-Protokollen.
Das Problem ist ...
Wie mache ich das in SQL Azure? Welche Tools verwende ich, um auf die Interna von SQL Azure zuzugreifen und genügend Daten zu erhalten?
Führen Sie die folgende Abfrage für die Datenbank "Master" in der SQL Azure-Datenbank
aus %Vor%Bei dieser Abfrage ist ein Leistungsproblem aufgetreten. Wenn das Zeitlimit überschritten wird, versuchen Sie es mit
%Vor%Beide Abfragen haben detaillierte Daten im XML-Format, die sich auf die ausgeführten Prozesse beziehen. Viel Glück!
Die Azure SQL-Datenbank unterstützt nun zwei Methoden zum Abrufen von Deadlock-XML-Berichten. Sie können eine db-scope XE-Sitzung mit dem Ereignis database_xml_deadlock_report erstellen, um sie selbst zu verfolgen, oder Sie können den Aufruf sys.fn_xe_telemetry_blob_target_read_file von der früheren Antwort ändern, um "dl" anstelle von "el" zu verwenden. Deadlocks werden jetzt in ihre eigene Datei geroutet, anstatt mit Anmeldeereignissen vermischt zu werden.
Dieser MSDN-Artikel enthält die neuesten Informationen.
Tags und Links sql-server azure deadlock azure-sql-database database-deadlocks