Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2016 (13.x) i nowsze wersje
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Klasa zdarzeń Lock:Escalation wskazuje, że zamek o drobniejszym ziarnistwie został przekształcony w zamek o grubszym ziarnistwie; na przykład blokada wierszowa, która jest przekształcana w blokadę obiektową. Klasa zdarzenia eskalacyjnego to Event ID 60.
Kolumny danych Lock:Escalation Event Class
| Nazwa kolumny danych | Typ danych | Description | Identyfikator kolumny | Filtrowanie |
|---|---|---|---|---|
| Nazwa aplikacji | nvarchar | Nazwa aplikacji klienckiej, która utworzyła połączenie z wystąpieniem programu SQL Server. Ta kolumna jest wypełniana wartościami przekazywanymi przez aplikację, a nie wyświetlaną nazwą programu. | 10 | Tak |
| ClientProcessID | int | Identyfikator przypisany przez komputer hosta do procesu, w którym działa aplikacja kliencka. Ta kolumna danych jest wypełniana, jeśli klient poda identyfikator procesu klienta. | 9 | Tak |
| DatabaseID | int | Identyfikacja bazy danych, w której zamek został uzyskany. SQL Server Profiler wyświetla nazwę bazy danych, jeśli kolumna danych ServerName jest zarejestrowana w śledzeniu i serwer jest dostępny. Określ wartość bazy danych przy użyciu funkcji DB_ID. | 3 | Tak |
| Nazwa bazy danych | nvarchar | Nazwa bazy danych, w której doszło do eskalacji. | 35 | Tak |
| EventClass | int | Typ zdarzenia = 60. | 27 | Nie. |
| EventSubClass | int | Przyczyna eskalacji zamka: 0 - LOCK_THRESHOLD oznacza, że oświadczenie przekroczyło próg blokady. 1 - MEMORY_THRESHOLD oznacza, że oświadczenie przekroczyło próg pamięci. |
dwadzieścia jeden | Tak |
| EventSequence | int | Sekwencja danego zdarzenia w żądaniu. | 51 | Nie. |
| GroupID | int | Identyfikator grupy obciążenia, w której jest uruchamiane zdarzenie śledzenia SQL. | 66 | Tak |
| Nazwa hosta | nvarchar | Nazwa komputera, na którym jest uruchomiony klient. Ta kolumna danych jest wypełniana, jeśli klient poda nazwę hosta. Aby określić nazwę hosta, użyj funkcji HOST_NAME. | 8 | Tak |
| IntegerData | int | Liczba zamków HoBT. Liczba zamków dla HoBT w momencie eskalacji zamki. | 25 | Tak |
| IntegerData2 | int | Liczba zamków wzrosła. Całkowita liczba śluz, które zostały przerobione. Te struktury śluzowe są delokowane, ponieważ są już objęte eskalowaną śluzą. | 55 | Tak |
| IsSystem | int | Wskazuje, czy zdarzenie miało miejsce w procesie systemowym, czy w procesie użytkownika. 1 = system, 0 = użytkownik. | 60 | Tak |
| Linenumber | int | Numer linii Transact-SQL oświadczenia. | 5 | Tak |
| Nazwa loginName | nvarchar | Nazwa logowania użytkownika (albo SQL Server security login, albo dane logowania Microsoft Windows w formie DOMAIN\username). | 11 | Tak |
| LoginSid | image | Numer identyfikacyjny zabezpieczeń (SID) zalogowanego użytkownika. Informacje te znajdziesz w widoku katalogu sys.server_principals . Każdy identyfikator SID jest unikatowy dla każdego identyfikatora logowania na serwerze. | 41 | Tak |
| Tryb | int | Powstały tryb blokady po eskalacji: 0=NULL - Kompatybilny ze wszystkimi innymi trybami blokady (LCK_M_NL) 1=Blokada stabilności schematu (LCK_M_SCH_S) 2=Zamek modyfikacji schematu (LCK_M_SCH_M) 3=Współdzielony zamek (LCK_M_S) 4=Blokada aktualizacji (LCK_M_U) 5=Wyłączny zamek (LCK_M_X) 6=Zamek współdzielony na zamiar (LCK_M_IS) 7=Blokada aktualizacji zamiaru (LCK_M_IU) 8=Wyłączny zamek na zamiar (LCK_M_IX) 9=Udostępniono z zamiarem aktualizacji (LCK_M_SIU) 10=Udostępnione wyłącznie z intencją (LCK_M_SIX) 11=Aktualizacja z wyłącznym zamiarem (LCK_M_UIX) 12=Blokada aktualizacji masowej (LCK_M_BU) 13=Zakres kluczy współdzielony/współdzielony (LCK_M_RS_S) 14=Zakres kluczy udostępniony/aktualizowany (LCK_M_RS_U) 15=Wstaw zakresu kluczy NULL (LCK_M_RI_NL) 16=Wspólny wstaw zakresu kluczy (LCK_M_RI_S) 17=Aktualizacja zakresu kluczy (LCK_M_RI_U) 18=Ekskluzywne wstawianie w zakresie kluczy (LCK_M_RI_X) 19=Wyłączny zakres kluczy współdzielony (LCK_M_RX_S) 20=Ekskluzywna aktualizacja zakresu kluczy (LCK_M_RX_U) 21=Ekskluzywne w zakresie kluczy (LCK_M_RX_X) |
32 | Tak |
| NTDomainName | nvarchar | Domena systemu Windows, do której należy użytkownik. | 7 | Tak |
| NTUserName | nvarchar | Nazwa użytkownika systemu Windows. | 6 | Tak |
| ObjectID | int | Identyfikator przypisany przez system tabeli, dla której wywołano eskalację blokady. | 22 | Tak |
| ObjectID2 | bigint | ID powiązanego obiektu lub jednostki. (Identyfikator HoBT, dla którego eskalacja blokady została wywołana.) | 56 | Tak |
| Przesunięcie | int | Zaczynam od przesunięcia Transact-SQL oświadczenia. | 61 | Tak |
| OwnerID | int | 1=TRANSAKCJA 2=KURSOR 3=SESJA 4=SHARED_TRANSACTION_WORKSPACE 5=EXCLUSIVE_TRANSACTION_WORKSPACE 6=WAITFOR_QUERY |
58 | Tak |
| RequestID | int | Identyfikator żądania zawierającego instrukcję . | 49 | Tak |
| Nazwa serwera | nvarchar | Nazwa śledzonego wystąpienia programu SQL Server. | 26 | Nie. |
| SessionLoginName | nvarchar | Nazwa logowania użytkownika, który utworzył sesję. Na przykład, jeśli połączysz się z SQL Server za pomocą Login1 i wykonasz polecenie jako Login2, SessionLoginName pokazuje Login1, a LoginName pokazuje Login2. W tej kolumnie są wyświetlane zarówno identyfikatory logowania programu SQL Server, jak i systemu Windows. | 64 | Tak |
| SPID | int | Identyfikator sesji, w której wystąpiło zdarzenie. | 12 | Tak |
| Godzina rozpoczęcia | datetime | Godzina rozpoczęcia zdarzenia, jeśli jest dostępna. | 14 | Tak |
| TextData | ntext | Tekst Transact-SQL oświadczenia, które spowodowało eskalację blokady. | 1 | Tak |
| TransactionID | bigint | Przypisany przez system identyfikator transakcji. | 4 | Tak |
| Typ | int | Granularność eskalacji blokady: 1=NULL_RESOURCE 2=BAZA DANYCH 3=PLIK 5=OBIEKT (poziom tabeli) 6=STRONA 7=KLUCZ 8=ZASIĘG 9=RID 10=ZASTOSOWANIE 11=METADANE 12=HOBT 13=ALLOCATION_UNIT |
57 | Tak |
Przykłady
Poniższy przykład wykorzystuje procedurę sp_trace_create tworzenia śladu, sp_trace_setevent dodaje kolumny eskalacji blokad do śledzenia, a następnie uruchamia sp_trace_setstatus śledzenie. W instrukcjach takich jak EXEC sp_trace_setevent @TraceID, 60, 22, 1, liczba 60 wskazuje klasę zdarzenia eskalacyjnego, 22 wskazuje kolumnę ObjectID i ustawia 1 zdarzenie śledzenia na ON.
DECLARE @RC int, @TraceID int;
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\TraceResults';
-- Set the events and data columns you need to capture.
EXEC sp_trace_setevent @TraceID, 60, 1, 1; -- 1 = TextData
EXEC sp_trace_setevent @TraceID, 60, 12, 1; -- 12 = SPID
EXEC sp_trace_setevent @TraceID, 60, 21, 1; -- 21 = EventSubClass
EXEC sp_trace_setevent @TraceID, 60, 22, 1; -- 22 = ObjectID
EXEC sp_trace_setevent @TraceID, 60, 25, 1; -- 25 = IntegerData
EXEC sp_trace_setevent @TraceID, 60, 55, 1; -- 25 = IntegerData2
EXEC sp_trace_setevent @TraceID, 60, 57, 1; -- 57 = Type
-- Set any filter by using sp_trace_setfilter.
-- Start the trace.
EXEC sp_trace_setstatus @TraceID, 1;
GO
Teraz, gdy ślad jest uruchomiony, wykonaj instrukcje, które chcesz prześledzić. Po zakończeniu wykonaj następujący kod, aby zatrzymać i zamknąć ślad. W tym przykładzie funkcja służy fn_trace_getinfo do użycia do traceid instrukcji sp_trace_setstatus .
-- After the trace is complete.
DECLARE @TraceID int;
-- Find the traceid of the current trace.
SELECT @TraceID = traceid
FROM ::fn_trace_getinfo(default)
WHERE value = N'C:\TraceResults.trc';
-- First stop the trace.
EXEC sp_trace_setstatus @TraceID, 0;
-- Close and then delete its definition from SQL Server.
EXEC sp_trace_setstatus @TraceID, 2;
GO
Zobacz też
sp_trace_setevent (Transact-SQL)
sys.dm_tran_locks (Transact-SQL)