Udostępnij za pośrednictwem


Wykrywanie i kończące zakleszczenia

Zakleszczenie występuje, gdy dwa lub więcej zadań trwale blok drugiej przez każdego zadania posiadające blokada zasób, który chcesz zablokować inne zadania.Następujące prezenty wykresu widoku wysokiego poziom zakleszczenie Państwa, gdzie:

  • Zadanie T1 ma blokada zasobu R1 (wskazywany przez strzałkę R1 T1) i zażądała blokada na zasób R2 (wskazywany przez strzałkę T1 R2).

  • Zadania T2 zablokował zasób R2 (wskazywany przez strzałkę R2 T2) i zażądał blokada zasobu R1 (wskazywany przez strzałkę T2 R1).

  • Ponieważ ani zadań może być kontynuowany do momentu zasób jest dostępny i może być zwolnione ani zasobów, dopóki zadanie nadal istnieje stanu zakleszczenie.

Diagram pokazujący zadania w stanie zakleszczenia

Aparat baz danych programu SQL Server Automatycznie wykrywa cyklów zakleszczenie w SQL Server. Aparat baz danych Wybiera jednej sesji jako ofiara zakleszczenie i bieżąca transakcja jest zakończone z powodu błędu podziału zakleszczenie.

Zasoby można zakleszczenie

Każda sesja użytkownika może być jeden lub więcej zadań, uruchomionych w jego imieniu, gdzie każde zadanie może nabycia lub poczekać na uzyskanie różnych zasobów.Następujące typy zasobów może spowodować blokowania może doprowadzić do zakleszczenie.

  • Blokuje.Oczekująca blokad dla zasobów, takich jak obiekty, stron, wiersze, metadane i aplikacji może być przyczyną zakleszczenie.Na przykład, transakcja T1 ma udostępnionych (S) blokada na wiersz r1 i oczekuje na uzyskanie wyłączności (X) blokada na r2.T2 transakcji zostało udostępnione (S) blokada na r2 i oczekuje na uzyskanie wyłączności (X) blokada na wiersz r1.To wyniki w cyklu blokada, w którym T1 i T2 oczekiwania dla siebie zwolnić zasoby zablokowane.

  • Wątków roboczych.Zadania w kolejce oczekiwania wątek roboczego dostępne mogą być przyczyną zakleszczenie.W kolejce zadań jest właścicielem zasobów, które blokują wszystkich wątków roboczych, wynikiem będzie zakleszczenie.Na przykład sesja S1 rozpocznie transakcję i uzyskuje współużytkowanego (S) blokada na r1 wiersz, a następnie przechodzi w tryb uśpienia.Aktywne sesje uruchomione na wszystkich wątków roboczych dostępnych próbujesz nabyć wyłączną (blokad dla wiersza r1 X).Ponieważ sesja S1 nie można pozyskać wątek roboczego, go nie można przekazać zatwierdzanie i uwalniania blokada na wiersz r1.To wyniki do zakleszczenie.

  • Pamięć.Gdy równoczesne żądania oczekują na dotacje pamięci, które nie mogą być spełnione z dostępnej pamięci, może wystąpić zakleszczenie.Na przykład, dwa kwerend współbieżnych, Q1 i Q2, wykonać jako funkcje zdefiniowane przez użytkownika, które nabywa odpowiednio 10 MB i 20 MB pamięci.Jeśli każda kwerenda musi 30 MB całkowita dostępna pamięć jest 20 MB, a Q1 i Q2 oczekiwania dla siebie zwolnić pamięć, a wyniki do zakleszczenie.

  • Równoległe zasobów związanych z wykonanie kwerendy może koordynatora, producenta lub konsumenta wątków skojarzone z portu wymiany blok sobie przyczyną zakleszczenie, zwykle po tym co najmniej jeden proces, który nie jest częścią kwerendy równolegle.Również równolegle kwerendy rozpoczęcia wykonania, SQL Server Określa stopień równoległości prostych, lub liczbę wątków roboczych, na podstawie bieżącego obciążenia.Jeśli nieoczekiwane zmiany obciążenia systemu, na przykład, gdy nowe kwerendy uruchomione na serwerze lub systemie zabraknie wątków roboczych może nastąpić zakleszczenie.

  • Wiele zestawów wyników Active (MARS) zasobów.Zasoby te są używane do kontrolowania, z przeplotem wiele żądań aktywnym obszarze MARS (zobacz Środowisko wykonawcze partii i MARS).

    • Zasób użytkownika.Gdy wątek oczekuje na zasób, który potencjalnie jest kontrolowane przez aplikację użytkownika, zasób jest traktowana jako zasób zewnętrzny lub użytkownika i jest traktowany jak blokada.

    • wykluczanie wzajemne sesji.Interleaved zadań uruchomionych w jednej sesja, co oznacza to tylko jedno zadanie można uruchomić w sesja na danym czas.Zadanie można uruchomić, musi to mieć wyłączny dostęp do obiektu wykluczanie wzajemne sesja.

    • wykluczanie wzajemne transakcji.Interleaved wszystkich zadań uruchomionych w jednej transakcji, co oznacza to tylko jedno zadanie można uruchomić w transakcji w danym czas.Zadanie można uruchomić, musi to mieć wyłączny dostęp do obiektu wykluczanie wzajemne transakcji.

    Aby zadania uruchamiane MARS muszą go nabyć wykluczanie wzajemne sesja.Jeśli zadanie jest uruchomione w ramach transakcji, następnie muszą nabyć wykluczanie wzajemne transakcji.Gwarantuje to tylko jednego zadania jest aktywny w jednym czas w danej sesja i danej transakcji.Gdy nabyły muteksy wymagane zadania można wykonać.Po zakończeniu zadania lub plonów w środku wniosek, go najpierw wyda wykluczanie wzajemne transakcji następuje wykluczanie wzajemne sesja w odwrotnej kolejności przejęcia.Jednakże zakleszczenia może wystąpić z tych zasobów.W poniższym kodzie przykład dwa zadania żądanie użytkownika U1 i żądanie użytkownika U2, działają w tej samej sesja.

    U1:    Rs1=Command1.Execute("insert sometable EXEC usp_someproc");
    U2:    Rs2=Command2.Execute("select colA from sometable");
    

    Wykonywanie procedura składowana z żądania użytkownika U1 uzyskał wykluczanie wzajemne sesja.Jeżeli procedura składowana pobiera long czas do wykonania, zakłada się przez Aparat baz danych , procedura przechowywana jest oczekiwanie na danych wejściowych od użytkownika.Żądanie użytkownika U2 czeka wykluczanie wzajemne sesja podczas, gdy użytkownik oczekuje na zestaw wyników z U2, i U1 oczekuje na zasób użytkownika.Jest to zilustrowane logicznie jako stanu zakleszczenie:

Diagram logiczny pokazujący zakleszczenie procesu użytkownika.

Wykrywanie zakleszczenia

Wszystkie zasoby wymienione w powyższej sekcji uczestniczyć w Aparat baz danych schemat wykrywania zakleszczenie.Wykrywanie zakleszczenia jest wykonywana przez wątek monitor blokada okresowo inicjuje wyszukiwanie przez wszystkie zadania w wystąpienie z Aparat baz danych.Następujących punktach opisano proces wyszukiwania:

  • Domyślny interwał wynosi 5 sekund.

  • Jeśli blokada wątek monitorowania znajdzie zakleszczenie, interwał wykrywania zakleszczenie będzie upuść z 5 sekund do zaledwie 100 milisekund w zależności od częstotliwości zakleszczenie.

  • Jeśli blokada wątek monitorowania zatrzymuje wyszukiwanie zakleszczenia, Aparat baz danych zwiększa odstępy między wyszukiwań do 5 sekund.

  • Jeśli martwychblokada właśnie został wykryty, zakłada się, że następny wątki musi czekać na blokada wprowadzania martwychblokada cyklu.Pierwsze kilka czeka Blokada po wykrył zakleszczenie będą natychmiast wyzwala wyszukiwanie zakleszczenia zamiast poczekać na następny interwał wykrywania zakleszczenia.Na przykład jeśli bieżącym interwałem jest 5 sekund, a tylko Wykryto zakleszczenie, dalej oczekiwania blokada będzie grzybków wyłącz wykrywanie zakleszczenia natychmiast.Jeśli ten oczekiwania blokada zakleszczenie, zostanie wykryty od razu, a nie podczas wyszukiwania następnej zakleszczenie.

Aparat baz danych Wykonuje zwykle tylko wykrywanie zakleszczenie okresowe.Ponieważ liczba zakleszczenie, napotkała w systemie jest zazwyczaj mała, wykrywanie zakleszczenie okresowe pomaga zmniejszyć narzuty wykrywanie zakleszczenie w systemie.

Gdy blokada monitor inicjuje zakleszczenie wyszukiwanie określonego wątku, identyfikuje zasób wątek oczekuje.blokada monitor następnie wyszukuje armatora(-ów) dla danego zasób i rekursywnie kontynuuje wyszukiwanie zakleszczenie tych wątków, aż do znalezienia cyklu.Cykl identyfikowane w ten sposób stanowi zakleszczenie.

Po wykryciu zakleszczenie Aparat baz danych kończy zakleszczenia, wybierając jeden z wątków jako ofiara zakleszczenia. Aparat baz danych Kończy bieżące partia wykonywane dla wątek, wycofuje transakcję ofiara zakleszczenie i zwraca błąd 1205 do aplikacji.Wycofywanie transakcji dla ofiara zakleszczenie zwalnia wszystkie blokady przechowywane przez transakcję.Umożliwia to transakcje inne wątki odblokowany i Kontynuuj.Błąd ofiara zakleszczenie 1205 rejestruje informacje o wątków i zasobach do zakleszczenie dziennik błędów.

Domyślnie Aparat baz danych wybiera jako ofiara zakleszczenie sesja uruchomioną transakcji jest najmniej kosztowny do wycofać.Alternatywnie, użytkownik może określić priorytet sesji w sytuacji impasu przy użyciu zestawu DEADLOCK_PRIORITY instrukcja.DEADLOCK_PRIORITY zestaw niski, normalny lub wysoki, lub też zestaw na dowolną liczbą całkowitą z zakres (-10 10).Zakleszczenie domyślnie priorytet normalny.Jeśli dwie sesje zakleszczenie różne priorytety, sesja o niższym priorytecie jest wybrany jako ofiara zakleszczenie.Jeśli zarówno sesje mają ten sam priorytet zakleszczenie, wybierany jest sesja z najtańszych wycofać transakcji.Jeśli ten sam priorytet zakleszczenie i koszt tej samej sesji zaangażowanych w cykl zakleszczenie, ofiarą jest wybierane losowo.

Pracując z CLR monitor zakleszczenie automatycznie wykrywa zakleszczenie zasobów synchronizacji (monitory, Czytnik/zapisywarka łączyć blokada i Wątek) dostępny wewnątrz procedury zarządzanych.Jednakże zakleszczenie jest rozwiązywany przez Zgłaszanie wyjątku w procedurze, który został wybrany jako ofiara zakleszczenie.Ważne jest, aby zrozumieć, że wyjątek nie automatycznie zwolnić zasoby aktualnie własnością ofiary; zasoby muszą być wyraźnie zwolnione.Spójne z zachowaniem wyjątek, wyjątek używany do identyfikowania ofiara zakleszczenie można złowionych i odrzucone.

Narzędzia informacje zakleszczenia

Aby wyświetlić informacje zakleszczenie, Aparat baz danych zawiera narzędzia do monitorowania w formularzu dwie flagi śledzenia, a zdarzenie zakleszczenie wykresu w SQL Server Profiler.

Flaga 1204 i flagi śledzenia 1222 śledzenia

Flaga 1222 informacje zwrotne przechwytywany w wystąpieniu zakleszczenia flagi śledzenia 1204 i śledzenia SQL Server 2005 dziennik błędów.Śledzenie Flaga raporty 1204 zakleszczenie informacje sformatowane przez każdy węzeł zaangażowanych w zakleszczenie.Śledzenia informacji zakleszczenie formaty 1222 flagi, najpierw przez procesy, a następnie przez zasoby.Jest możliwe włączyć zarówno flagi śledzenia uzyskanie dwóch reprezentacji tego samego zdarzenie zakleszczenie.

Oprócz definiowania właściwości flagi śledzenia 1204 i 1222, w poniższej tabela przedstawiono również podobieństw i różnic.

Właściwość

Flaga 1204 i flagi śledzenia 1222 śledzenia

Flagi śledzenia 1204 tylko

Flagi śledzenia 1222 tylko

Format wyjściowy

Dane wyjściowe są przechwytywane w SQL Server 2005 dziennik błędów.

Koncentruje się na węzłach z zakleszczenie.Każdy węzeł dysponuje wydzieloną sekcję i końcowej części opisano ofiara zakleszczenie.

Zwraca informacje w formacie XML podobne, nie jest zgodna ze schematem XML Schema Definition (XSD).Format ma trzy główne sekcje.Pierwsza sekcja deklaruje ofiara zakleszczenie.W drugiej sekcji opisano każdy proces zakleszczenie.Trzecia sekcja opisuje zasoby, które są tożsame z węzłów flagi śledzenia 1204.

Identyfikowanie atrybutów

SPID:<x> ECID:<x>. Identyfikuje proces systemu identyfikator wątek w przypadkach równoległych procesów.Wpis SPID:<x> ECID:0, gdzie <x> zastępuje wartość SPID, reprezentuje głównego wątek.Wpis SPID:<x> ECID:<y>, gdzie <x> zastępuje wartość SPID i <y> jest większa niż 0, reprezentuje sub-threads dla tego samego identyfikatora SPID.

BatchID (sbid dla śledzenia Flaga 1222).Identyfikuje partia, z których kodu wykonanie żądania lub utrzymywanie blokada.Gdy wiele zestawów wyników Active (MARS) jest wyłączona, wartość BatchID jest równa 0.Po włączeniu MARS jest wartość active partii 1 n.Jeśli w sesja nie aktywne instancje, BatchID jest równa 0.

Tryb.Określa typ blokada dla określonego zasób, na wniosek, przyznane lub obsługiwane przez wątek.Tryb może być IS (zamiarem udostępniony), S (udostępniany), U (aktualizacja), IX (zamiarem wyłącznie), SZEŚCIU (udostępnione z zamiarem wyłączności) i X (wyłączność).Aby uzyskać więcej informacji, zobacz Tryby Lock.

Wiersz # (linii dla śledzenia Flaga 1222).Wyświetla numer wiersza w bieżącym partia sprawozdań, które było wykonywane, gdy wystąpił zakleszczenie.

Dane wejściowe w buforze (inputbuf dla śledzenia Flaga 1222).Wyświetla listę wszystkich instrukcji w bieżącej partia.

Węzeł.Reprezentuje numer wpisu w łańcuchu zakleszczenie.

Wyświetla listę.Właściciel blokada może być częścią tych list:

  • Wykaz dotacji.Wylicza bieżącego właścicieli zasób.

  • Konwertowanie listy.Wylicza bieżącego właścicieli, które próbujesz konwertować na wyższy poziom ich blokad.

  • Poczekaj listy.Wylicza bieżące nowe żądania blokada dla zasób.

Typ instrukcji.Opisuje typ instrukcja DML (SELECT, INSERT, UPDATE lub DELETE) na którym wątki uprawnień.

Właścicielem zasobu ofiarą.Określa uczestniczących wątek, SQL Server wybiera jako ofiara przerwać cykl zakleszczenie.Wybrany wątek i wszystkie istniejące sub-threads zostają zakończone.

Rozgałęzienie dalej.Reprezentuje sub-threads dwóch lub więcej sam identyfikator SPID są zaangażowane w cyklu zakleszczenie.

ofiara zakleszczenie.Reprezentuje adres pamięci fizycznej zadania (zobacz sys.dm_os_tasks (języka Transact-SQL)), która została wybrana jako ofiara zakleszczenie.Może być 0 (zero) w przypadek zakleszczenie nierozwiązane.Zadanie, które jest wycofywanie nie wybrany jako ofiara zakleszczenie.

executionstack.Reprezentuje Transact-SQL kod wykonywany w czas występuje zakleszczenie.

priorytet.Reprezentuje priorytet zakleszczenie.W niektórych przypadkach Aparat baz danych opcjonalnych może zmienić priorytet zakleszczenie krótki czas trwania, aby osiągnąć lepszą współbieżność.

logused.Dziennik zajmowane przez zadanie.

Identyfikator właściciela.Identyfikator transakcji, która ma kontrolę nad żądania.

Stan.Stan zadania.Jest to jedna z następujących wartości:

  • Oczekujące.Oczekiwanie na wątek roboczego.

  • możliwe do uruchomienia.Gotowy do uruchomienia, ale oczekiwania kwant.

  • Uruchamianie.Aktualnie uruchomione na harmonogram.

  • zawieszone.Wykonanie jest zawieszone.

  • Sporządzono.Zadanie zostało ukończone.

  • spinloop.Oczekiwanie na spinlock zwolnienie.

waitresource.zasób Wymagane przez zadanie.

czas_oczekiwania.Czas w milisekundach oczekiwania dla zasób.

schedulerid.Harmonogram skojarzone z tym zadaniem.See sys.dm_os_schedulers (języka Transact-SQL).

hostname.Nazwa stacja robocza.

IsolationLevel.Bieżący poziom izolacji transakcji.

Xactid.Identyfikator transakcji, która ma kontrolę nad żądania.

CurrentDB.Identyfikator bazy danych.

lastbatchstarted.Ostatnio czas wsadowe uruchomiono procesu klient.

lastbatchcompleted.Ostatnio czas Ukończono proces klient partia execution.

clientoption1 i clientoption2.Ustawianie opcji dla tego połączenia klient.Jest to maskę bitową, która zawiera informacje na temat opcji, zazwyczaj sterowany instrukcje SET, takich jak instrukcję SET NOCOUNT i ustaw XACTABORT.

associatedObjectId.Reprezentuje identyfikator HoBT (sterty lub drzewa b)

Atrybutów zasobów

RID.Identyfikuje pojedynczego wiersza w tabela, w którym blokada utrzymywane lub wymagane.RID jest reprezentowana jako RID: db_id:file_id:page_no:row_no.Na przykład RID: 6:1:20789:0.

OBIEKT.Identyfikuje tabela, w której blokada utrzymywane lub wymagane.OBIEKT jest reprezentowany jako obiekt: db_id:object_id.Na przykład TAB: 6:2009058193.

KEY.Identyfikuje klucz zakres w ramach indeksu, w którym blokada utrzymywane lub wymagane.KLUCZ jest reprezentowana jako klucz: db_id:hobt_id (index key hash value).For example, KEY: 6:72057594057457664 (350007a4d329).

PAG.Identyfikuje zasób strona, na którym blokada utrzymywane lub wymagane.PAG jest reprezentowana jako PAG: db_id:file_id:page_no.For example, PAG: 6:1:20789.

EXT.Identyfikuje strukturę fragment.Rozszerzenie jest reprezentowana jako EXT: db_id:file_id:extent_no.For example, EXT: 6:1:9.

DB.Identyfikuje blokada bazy danych.DB jest reprezentowana w jednym z następujących sposobów:

  • DB: db_id

  • DB: db_id[Luzem-OP-DB], który identyfikuje blokada bazy danych przez kopia zapasowa bazy danych.

  • DB: db_id[BULK-OP-LOG], który identyfikuje blokada przez dziennika kopia zapasowa dla tej konkretnej bazy danych.

APP.Identyfikuje blokada przez zasób aplikacji.Aplikacja jest reprezentowana jako aplikacja: lock_resource.For example, APP: Formf370f478.

METADANE.Reprezentuje metadane zasobów zaangażowanych w zakleszczenie.Ponieważ METADANE ma wiele subresources, zwrócona wartość zależy od subresource, który został zakleszczony.For example, METADATA.USER_TYPE returns user_type_id = <integer_value>.Aby uzyskać więcej informacji o zasobach METADANYCH i subresources, zobacz sys.dm_tran_locks (języka Transact-SQL).

HOBT.Reprezentuje sterty lub drzewa b zaangażowane do zakleszczenie.

Brak wyłączne tej flagi śledzenia.

Brak wyłączne tej flagi śledzenia.

Przykład 1204 flagi śledzenia

Poniższy przykład przedstawia dane wyjściowe po włączeniu flagi śledzenia 1204.W tym przypadek sterty z indeksów nie jest tabelą w węźle 1 i tabela 2 węzła jest sterty z indeks nieklastrowany.Indeks klucz w węzeł 2 jest aktualizowany po wystąpieniu zakleszczenie.

Deadlock encountered .... Printing deadlock information
Wait-for graph

Node:1

RID: 6:1:20789:0               CleanCnt:3 Mode:X Flags: 0x2
 Grant List 0:
   Owner:0x0315D6A0 Mode: X        
     Flg:0x0 Ref:0 Life:02000000 SPID:55 ECID:0 XactLockInfo: 0x04D9E27C
   SPID: 55 ECID: 0 Statement Type: UPDATE Line #: 6
   Input Buf: Language Event: 
BEGIN TRANSACTION
   EXEC usp_p2
 Requested By: 
   ResType:LockOwner Stype:'OR'Xdes:0x03A3DAD0 
     Mode: U SPID:54 BatchID:0 ECID:0 TaskProxy:(0x04976374) Value:0x315d200 Cost:(0/868)

Node:2

KEY: 6:72057594057457664 (350007a4d329) CleanCnt:2 Mode:X Flags: 0x0
 Grant List 0:
   Owner:0x0315D140 Mode: X        
     Flg:0x0 Ref:0 Life:02000000 SPID:54 ECID:0 XactLockInfo: 0x03A3DAF4
   SPID: 54 ECID: 0 Statement Type: UPDATE Line #: 6
   Input Buf: Language Event: 
     BEGIN TRANSACTION
       EXEC usp_p1
 Requested By: 
   ResType:LockOwner Stype:'OR'Xdes:0x04D9E258 
     Mode: U SPID:55 BatchID:0 ECID:0 TaskProxy:(0x0475E374) Value:0x315d4a0 Cost:(0/380)

Victim Resource Owner:
 ResType:LockOwner Stype:'OR'Xdes:0x04D9E258 
     Mode: U SPID:55 BatchID:0 ECID:0 TaskProxy:(0x0475E374) Value:0x315d4a0 Cost:(0/380)

Przykład 1222 flagi śledzenia

Poniższy przykład przedstawia dane wyjściowe po włączeniu flagi śledzenia 1222.przypadek jednej tabela jest sterty z żadnych indeksów i drugiej tabela jest sterty z indeks nieklastrowany.W drugiej tabela indeks klucz jest aktualizowany po wystąpieniu zakleszczenie.

deadlock-list
 deadlock victim=process689978
  process-list
   process id=process6891f8 taskpriority=0 logused=868 
   waitresource=RID: 6:1:20789:0 waittime=1359 ownerId=310444 
   transactionname=user_transaction 
   lasttranstarted=2005-09-05T11:22:42.733 XDES=0x3a3dad0 
   lockMode=U schedulerid=1 kpid=1952 status=suspended spid=54 
   sbid=0 ecid=0 priority=0 transcount=2 
   lastbatchstarted=2005-09-05T11:22:42.733 
   lastbatchcompleted=2005-09-05T11:22:42.733 
   clientapp=Microsoft SQL Server Management Studio - Query 
   hostname=TEST_SERVER hostpid=2216 loginname=DOMAIN\user 
   isolationlevel=read committed (2) xactid=310444 currentdb=6 
   lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200
    executionStack
     frame procname=AdventureWorks2008R2.dbo.usp_p1 line=6 stmtstart=202 
     sqlhandle=0x0300060013e6446b027cbb00c69600000100000000000000
     UPDATE T2 SET COL1 = 3 WHERE COL1 = 1;     
     frame procname=adhoc line=3 stmtstart=44 
     sqlhandle=0x01000600856aa70f503b8104000000000000000000000000
     EXEC usp_p1     
    inputbuf
      BEGIN TRANSACTION
       EXEC usp_p1
   process id=process689978 taskpriority=0 logused=380 
   waitresource=KEY: 6:72057594057457664 (350007a4d329)   
   waittime=5015 ownerId=310462 transactionname=user_transaction 
   lasttranstarted=2005-09-05T11:22:44.077 XDES=0x4d9e258 lockMode=U 
   schedulerid=1 kpid=3024 status=suspended spid=55 sbid=0 ecid=0 
   priority=0 transcount=2 lastbatchstarted=2005-09-05T11:22:44.077 
   lastbatchcompleted=2005-09-05T11:22:44.077 
   clientapp=Microsoft SQL Server Management Studio - Query 
   hostname=TEST_SERVER hostpid=2216 loginname=DOMAIN\user 
   isolationlevel=read committed (2) xactid=310462 currentdb=6 
   lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200
    executionStack
     frame procname=AdventureWorks2008R2.dbo.usp_p2 line=6 stmtstart=200 
     sqlhandle=0x030006004c0a396c027cbb00c69600000100000000000000
     UPDATE T1 SET COL1 = 4 WHERE COL1 = 1;     
     frame procname=adhoc line=3 stmtstart=44 
     sqlhandle=0x01000600d688e709b85f8904000000000000000000000000
     EXEC usp_p2     
    inputbuf
      BEGIN TRANSACTION
        EXEC usp_p2    
  resource-list
   ridlock fileid=1 pageid=20789 dbid=6 objectname=AdventureWorks2008R2.dbo.T2 
   id=lock3136940 mode=X associatedObjectId=72057594057392128
    owner-list
     owner id=process689978 mode=X
    waiter-list
     waiter id=process6891f8 mode=U requestType=wait
   keylock hobtid=72057594057457664 dbid=6 objectname=AdventureWorks2008R2.dbo.T1 
   indexname=nci_T1_COL1 id=lock3136fc0 mode=X 
   associatedObjectId=72057594057457664
    owner-list
     owner id=process6891f8 mode=X
    waiter-list
     waiter id=process689978 mode=U requestType=wait

Zdarzenie wykresu zakleszczenia Profiler

To zdarzenie w SQL Server Profiler , przedstawia graficznej reprezentacji zadań i zasobów zaangażowanych w zakleszczenie.W poniższym przykładzie przedstawiono dane wyjściowe z SQL Server Profiler , gdy wykres zakleszczenie zdarzenie jest włączona.

Logiczny diagram przepływu pokazujący zakleszczenie procesu użytkownika.

Więcej informacji o pracy SQL Server Profiler zakleszczenie wykresu, zobacz Analizowanie zakleszczenia z SQL Server Profiler.