Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Använd SQL Server Profiler för att identifiera orsaken till ett dödläge. Ett dödläge uppstår när det finns ett cykliskt beroende mellan två eller flera trådar, eller processer, för vissa uppsättningar resurser i SQL Server. Med SQL Server Profiler kan du skapa en spårning som registrerar, spelar upp och visar dödlägeshändelser för analys.
Om du vill spåra dödlägeshändelser lägger du till händelseklassen Deadlock graph i en spårning. Den här händelseklassen fyller i datakolumnen TextData i spårningen med XML-data om processen och objekt som ingår i dödläget. SQL Server Profiler kan extrahera XML-dokumentet till en deadlock XML-fil (.xdl) som du kan visa senare i SQL Server Management Studio. Du kan konfigurera SQL Server Profiler för att extrahera Deadlock Graph-händelser till en enda fil som innehåller alla Deadlock Graph-händelser eller för att separera filer. Den här extraheringen kan göras på något av följande sätt:
Vid spårningskonfigurationen använder du fliken Inställningar för extrahering av händelser . Den här fliken visas inte förrän du väljer deadlock-grafhändelsen på fliken Val av händelser .
Använd alternativet Extrahera SQL Server-händelser på menyn Arkiv .
Enskilda händelser kan också extraheras och sparas genom att högerklicka på en specifik händelse och välja Extrahera händelsedata.
Deadlock-grafer
SQL Server Profiler och SQL Server Management Studio använder ett väntediagram för dödläge för att beskriva ett dödläge. Väntediagrammet för dödläget innehåller processnoder, resursnoder och kanter som representerar relationerna mellan processerna och resurserna. Komponenterna i väntediagram definieras i följande tabell:
| Nod | Beskrivning |
|---|---|
| Processnod | En tråd som utför en uppgift. till exempel INSERT, UPDATE, eller DELETE. |
| Resursnod | Ett databasobjekt; till exempel en tabell, ett index eller en rad. |
| Kant | En relation mellan en process och en resurs. En begärandegräns inträffar när en process väntar på en resurs. En ägargräns inträffar när en resurs väntar på en process. Låsläget ingår i kantbeskrivningen. Till exempel Läge: X. |
Blockeringsprocessnod
I ett väntediagram innehåller processnoden information om processen. I följande tabell beskrivs komponenterna i en process.
| Komponent | Definition |
|---|---|
| Serverprocess-ID | Sessions-ID (SPID), en servertilldelad identifierare för processen som äger låset. |
| Server batch-ID | Server batch identifier (SBID). |
| Körningskontext-ID | Körningskontextidentifierare (ECID). Körningskontext-ID för en viss tråd som är associerad med ett specifikt sessions-ID. ECID = { 0, 1, 2, 3, ... n }, där 0 alltid representerar huvudtråden eller den överordnade tråden, och { 1, 2, 3, ... n } representerar undertrådarna. |
| Dödlägesprioritet | Prioritet för dödlåshantering för processen. Mer information om möjliga värden finns i SET DEADLOCK_PRIORITY. |
| Logg som används | Mängden loggutrymme som används av processen. |
| Ägar-ID | Transaktions-ID för de processer som använder transaktioner och som för närvarande väntar på ett lås. |
| Transaktionsbeskrivning | Pekare till transaktionsbeskrivningen som beskriver transaktionens tillstånd. |
| Inputbuffer | Indatabuffert för den aktuella processen definierar vilken typ av händelse och instruktion som körs. Möjliga värden är: Språk RPC Ingen |
| Uttalande | Typ av uttalande. Möjliga värden är: NOP VÄLJ UPPDATERA INFOGA TA BORT Okänd |
Nod för resursdödläge
I ett dödläge väntar två processer på en resurs som innehas av den andra processen. I ett dödlägesdiagram visas resurserna som resursnoder.