Update: Deadlocks auftreten, wenn mehrere gleichzeitige Abfragebenachrichtigungsabonnements auf dieselben Objekte wie in SQL Server 2005 oder SQL Server 2008 ausgelöst werden

Microsoft stellt Updates für Microsoft SQL Server 2005 als downloadbare Datei. Da Updates sind kumulativ, jede neue Version alle Hotfixes enthält und alle Sicherheitsupdates, die mit früheren SQL Server 2005 wurden. Microsoft stellt Updates für Microsoft SQL Server 2008 als downloadbare Datei. Da Updates sind kumulativ, jede neue Version alle Hotfixes enthält und alle Sicherheitsupdates, die mit früheren SQL Server 2008 wurden.

Problembeschreibung

Betrachten Sie das folgende Szenario:
  • In Microsoft SQL Server 2005 oder Microsoft SQL Server 2008 werden mehrere Abfragebenachrichtigungsabonnements für einige Tabellen einrichten.
  • Diese Tabellen aktualisieren.
  • Die Anträge der Abfragebenachrichtigungsabonnements werden gleichzeitig ausgelöst.
In diesem Szenario können Deadlocks auf Query Notification-Systemtabellen (z. B. eine Systemtabelle mit einem Namen, die sys.query_notification_xxxxxx ähnelt) auftreten. Außerdem wird das folgende deadlockdiagramm in der SQL Server-Fehlerprotokolldatei protokolliert:
Waiter-Id = process7f8dc48 Modus = U RequestType = warten
Waiter-Liste
Besitzer-Id = process873ce38 Modus = U
Liste Besitzer
Tastensperre Hobtid = 72057594049462272 Dbid = 5 Objektname = < Datenbank >. sys.query_notification_626101271 Indexname = Cidx Id = lock178dd6c0
mode=U associatedObjectId=72057594049462272,

Waiter-Id = process873ce38 Modus = U RequestType = warten

Waiter-Liste

Besitzer-Id = process7f8dc48 Modus = U
Liste Besitzer
Tastensperre Hobtid = 72057594049462272 Dbid = 5 Objektname = < Datenbank >. sys.query_notification_626101271 Indexname = Cidx Id = lock176848c0
mode=U associatedObjectId=72057594049462272,
Ressourcenliste,
<Query>,
Inputbuf,
<Query>,
Frame Procname = Ad-hoc-Zeile = 1 Sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
ExecutionStack,
Prozess-Id = process873ce38 Taskpriority = 0 Logused = 0 Waitresource = Schlüssel: Wartezeit 5:72057594049462272 (0e0086ec58d5) = 4984 OwnerId = 574444809 Transactionname = CQueryScan::BeginNotifXact Lasttranstarted = < Datum >< > XDES = 0x732047f8 LockMode = U Schedulerid = 7 Kpid = 8068 Status angehalten Spid = = 133 Sbid = 0 Ecid = 0 Priorität = 0 transzahl = 0 Lastbatchstarted = < Datum >< > Lastbatchcompleted = < Datum >< > Clientapp = .Net SqlClient-Datenprovider Hostname = < Hostname > Hostpid = 1824 Loginname = < Loginname > Isolationlevel = read Commit (2) Xactid = 574444808 CurrentDb = 5 LockTimeout = 4294967295 clientoption1 = 671088672 clientoption2 = 128056,

<Query>,
Inputbuf,
<Query>,
Frame Procname = Ad-hoc-Zeile = 1 Sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
ExecutionStack,
Prozess-Id = process7f8dc48 Taskpriority = 0 Logused = 0 Waitresource = Schlüssel: Wartezeit 5:72057594049462272 (0d006843edc7) = 4984 OwnerId = 574444769 Transactionname = CQueryScan::BeginNotifXact Lasttranstarted = < Datum >< > XDES = 0x6adc9528 LockMode = U Schedulerid = 5 Kpid = 676 Status angehalten Spid = = 293 Sbid = 0 Ecid = 0 Priorität = 0 transzahl = 0 Lastbatchstarted = < Datum >< > Lastbatchcompleted = < Datum >< > Clientapp = .Net SqlClient-Datenprovider Hostname = < Hostname > 110 Hostpid = 1272 Loginname = < Loginname > Isolationlevel = read Commit (2) Xactid = 574444768 Currentdb = 5 LockTimeout = 4294967295 clientoption1 = 671088672 clientoption2 = 128056,

Prozessliste,
Deadlock-Opfer = process873ce38,
Deadlock-Liste

Ursache

Standardmäßig verwendet SQL Server die Transaktionsisolationsstufe READ_COMMITTED. Daher müssen internen SQL Server-Abfragen zu Deadlocks auftreten. Im Abschnitt "Symptome" beschriebene Szenario sind Abfragen, die den Deadlock führen interne Abfragen.

Problemlösung

SQL Server 2005 Servicepack 3


Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 6 für SQL Server 2005 Service Pack 3 veröffentlicht. Für weitere Informationen zu diesem kumulativen Update-Paket, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
974648 kumulative Updatepaket 6 für SQL Server 2005 Service Pack 3
Hinweis Da diese Builds kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in früheren SQL Server 2005 enthalten waren. Microsoft empfiehlt, dass Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
960598 der SQL Server 2005 builds, die nach der Freigabe von SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen SQL Server 2005 Service Pack 3-Hotfix eine Installation von SQL Server 2005 Service Pack 3 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack bereitgestellt wird, in einem nächsten Servicepack für SQL Server enthalten.

Die Version von SQL Server 2008

Wichtig Wenn Sie die Version von SQL Server 2008 ausführen, müssen Sie dieses Update installieren.

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 8 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket für SQL Server 2008 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
975976 kumulative Updatepaket 8 für SQL Server 2008
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Wir empfehlen Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
956909 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008

SQL Server 2008 Servicepack 1

Wichtig Wenn Sie SQL Server 2008 Service Pack 1 ausführen, müssen Sie dieses Update installieren.


Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 5 für SQL Server 2008 Service Pack 1 veröffentlicht. Für weitere Informationen zu diesem kumulativen Update-Paket, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
975977 kumulative Updatepaket 5 für SQL Server 2008 Service Pack 1
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Microsoft empfiehlt, dass Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
970365 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen SQL Server 2008 Service Pack 1-Hotfix eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack bereitgestellt wird, in einem nächsten Servicepack für SQL Server enthalten.


Nach der Installation dieses Updates wird die Isolationsstufe auf Serializable festgelegt, wenn Datenbankmodul Systemtabellen zugreift.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen

Nach der Ursache des Problems kann nicht das Standardverfahren und Indizierung dieses Problem beheben. Der Hotfix wird verwendet, um vorübergehend ändern die Isolationsstufe auf eine höhere Ebene für einen bestimmten Teil der Transaktion um sicherzustellen, dass die problematischen Abfragen in Deadlocks nicht ausgeführt werden.

Referenzen

Weitere Informationen zum inkrementellen Dienstmodell für SQL Server klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

935897 erläutert wird ein inkrementelles Dienstmodell steht der SQL Server-Team zu Hotfixes für gemeldete Probleme

Weitere Informationen zum Beziehen von SQL Server 2005 Service Pack 3 finden im folgenden Artikel der Microsoft Knowledge Base:

913089 so erhalten Sie das neueste Servicepack für SQL Server 2005

Weitere Informationen zu den neuen Features in SQL Server 2005 Service Pack 3 (SP3) und die Verbesserung der SQL Server 2005 SP3 finden Sie auf der folgenden Microsoft-Website:
Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

Neues Benennungsschema für Microsoft SQL Server-Software 822499 Pakete aktualisieren

Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684
Beschreibung der Standardterminologie, die zum Beschreiben von Microsoft-Softwareupdates verwendet wird.
Eigenschaften

Artikelnummer: 975090 – Letzte Überarbeitung: 13.01.2017 – Revision: 1

Feedback