Problem
Das Timeout für Sperranforderung wurde überschritten. (Microsoft SQL Server, Fehler: 1222)
TITEL: Microsoft SQL Server Management Studio
——————————
Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)
——————————
ZUSÄTZLICHE INFORMATIONEN:
Das Timeout für Sperranforderung wurde überschritten.
Das Timeout für Sperranforderung wurde überschritten. (Microsoft SQL Server, Fehler: 1222)
Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.50.6220&EvtSrc=MSSQLServer&EvtID=1222&LinkId=20476
Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)
Wird im SSMS angezeigt.
Der Aktivitätsmonitor kann keine Abfragen für den Server SP-DB-Server ausführen
Der Aktivitätsmonitor kann keine Abfragen für den Server SP-DB-Server ausführen.
Der Aktivitätsmonitor wird für diese Instanz angehalten.
Verwenden Sie das Kontextmenü im Übersichtsbereich, um den Aktivitätsmonitor wieder zu starten.
Zusätzliche Informationen:
Timeout abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangs überschritten oder der Server reagiert nicht. (Microsoft SQL Server)
Der Wartevorgang wurde abgebrochen
Details
Beschreibung
Das Timeout für Sperranforderung wurde überschritten. (Microsoft SQL Server, Fehler: 1222)
Beim starten von Microsoft SQL Server Management Studio (SSMS) werden evtl. folgende Fehlermeldungen angezeigt.
TITEL: Microsoft SQL Server Management Studio
——————————Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)
——————————
ZUSÄTZLICHE INFORMATIONEN:Das Timeout für Sperranforderung wurde überschritten.
Das Timeout für Sperranforderung wurde überschritten. (Microsoft SQL Server, Fehler: 1222)Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.50.6220&EvtSrc=MSSQLServer&EvtID=1222&LinkId=20476
Auf englischen Systemen wird diese Meldung angezeigt:
Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)
Der Aktivitätsmonitor kann keine Abfragen für den Server SP-DB-Server ausführen
Im SQL-Management-Studio wird folgende Fehlermeldung angezeigt, wenn man versucht den Aktivitätsmonitor zu öffnen:
Der Aktivitätsmonitor kann keine Abfragen für den Server SP-DB-Server ausführen.
Der Aktivitätsmonitor wird für diese Instanz angehalten.
Verwenden Sie das Kontextmenü im Übersichtsbereich, um den Aktivitätsmonitor wieder zu starten.Zusätzliche Informationen:
Timeout abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangs überschritten oder der Server reagiert nicht. (Microsoft SQL Server)
Der Wartevorgang wurde abgebrochen
Ist-Zustand
Viele SQL-Systemabfragen wie sp_who2
laufen ewig und bringen so keine Ergebnisse oder brechen die Abfrage mit dem o.g. Fehler. 1222 ab.
Im SSMS im Objekt-Explorer sind Elemente wie Agent und Logs nicht vorhanden.
Der Aktivitätsmonitor zeigt die Meldung „Der Aktivitätsmonitor kann keine Abfragen für den Server SP-DB-Server ausführen.“ dafür aber keine Prozesse an.
Es ist nicht möglich im SSMS Berichte anzeigen zu lassen. Es wird folgende Meldung angezeigt: „Die DocumentSite eines WindowFrame kann nur einmal festgelegt werden. (mscorlib)“
SystemUmgebung
- SharePoint 2013 SP1 (On-Premises, 3 Tier Cluster)
- MS SQL-Server 2008 R2 Failover-Cluster
- Backup: AvePoint DocAve 6 SP6
- Nintex Workflow 2013 & Nintex Forms 2013
- OWA / WAC
- Workflow-Manager
- BI
- Monitoring
Workaround
Wahrscheinlich blockieren sich mehrere SQL-Prozesse bzw. Abfragen gegenseitig. In unserem Fall ist überschneidet sich die Zeit der blockierten Abfrage mit dem nächtlichen Schwenk des Failover-Clusters.
Auch wenn die SQL-Server-Protokolle in SSMS nicht zur Verfügung stehen, so kann man diese als Textdateien im folgenden Ordner finden:
Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG
und ERRORLOG.n
Die problematischen Abfragen herausfinden
DBCC opentran()
Mit der SQL-Abfrage
DBCC opentran()
kann die älteste aktive Transaktion herausgefunden werden. Das Ergebnis zeigt die SPID und die Startzeit des Prozesses.
sys.dm_exec_requests
Hiermit lassen sich die Anfragen anzeigen.
SELECT * FROM sys.dm_exec_requests;
GO
Die wichtigsten Spalten sind:
- session_id
- start_time
- status
- wait_type (z.B. LCK_M_SCH)
sys.dm_exec_connections
Mit dieser SQL-Abfrage können die Verbindungen (inkl. der problematischen Verbindungen und der Startzeit) angezeigt werden.
SELECT * FROM sys.dm_exec_connections;
GO
Die wichtigsten Spalten sind:
- session_id
- connect_time
- client_net_adress (Quell-IP der Abfrage)
- local_net_adress (SQL-Instanz IP-Adresse)
sp_who2, sp_lock, sp_lock2
In diversen Anleitung findet man die SQL-Abfrage
sp_who2
bzw.
sp_who2 <SPID>
bzw.
sp_lock2 <SPID>
die in so einem Fall relevanten Daten zeigen soll. In unserem Fall lief die Abfrage zu lange.
Die wichtigsten Spalten sind:
- SPID
- Status
- Login
- HostName
- BlkBy (blockiert durch)
- ProgrammName
Workaround 1 – SQL-Server Instanz neu starten
Falls die SQL-Server-Instanz in einem Microsoft Failover-Cluster läuft, dann den Dienst im Failovercluster-Manager offline und dann online schalten.
Falls nicht, dann den SQL-Server-Dienst der entsprechenden Instanz im SQL Server Configuration Manager „Neu starten„.
Workaround 2 – kill <session_id>
Es ist auch möglich, die oben ermittelten problematischen Sessions zu „killen“.
Hinweis: Das „killen“ von Sessions könnte unerwünschte Folgen nach sich ziehen (z.b. der Agent-Dienst kann nicht gestartet werden o.Ä.) |
Die weiter oben herausgefundene, problematische Sessions können mit folgender SQL-Abfrage abgebrochen werden:
kill <session_id>
bzw.
kill <spid>
Bsp.: In unserem Fall waren die Sessions mit den IDs 52 und 72 geblockt.
Diese wurden mit kill 52
und kill 72
„gekillt“
Links
- msdn.microsoft.com: sys.dm_exec_requests (Transact-SQL)
- www.simple-talk.com: The DBA as Detective: Troubleshooting Locking and Blocking
- blog.sqlauthority.com: SQL SERVER – Quickest Way to Identify Blocking Query and Resolution – Dirty Solution
- blog.wsol.com: SQL Server Locks, Blocked Processes, and Two Easy Ways to Find Them
Der Beitrag Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222) erschien zuerst auf Die SharePoint-Wiese.