Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak znaleźć przyczynę zakleszczenia w sql server ro14?

Informacje o zakleszczeniu są przechwytywane przez system_health Domyślnie śledzenie zdarzeń rozszerzonych. Nie ma potrzeby włączania dodatkowych flag śledzenia.

Informacje z xml_deadlock zdarzenie można wyświetlić w Eksploratorze obiektów SSMS (Zarządzanie--> Zdarzenia rozszerzone--> Sesje--zdrowie_systemu) lub za pomocą T-SQL. Poniżej znajduje się przykładowe zapytanie, które pozwala uzyskać zakleszczenie xml z docelowego pliku. Możesz także zapisać zakleszczenie xml do pliku za pomocą xdl rozszerzenie i otwórz plik w SSMS, aby zobaczyć graficzny widok zakleszczenia.

--get xml_deadlock_report from system_health session file target
WITH
      --get full path to current system_health trace file
      CurrentSystemHealthTraceFile AS (
        SELECT CAST(target_data AS xml).value('(/EventFileTarget/File/@name)[1]', 'varchar(255)') AS FileName
        FROM sys.dm_xe_session_targets
        WHERE
            target_name = 'event_file'
            AND CAST(target_data AS xml).value('(/EventFileTarget/File/@name)[1]', 'varchar(255)') LIKE '%\system[_]health%'
    )
      --get trace folder name and add base name of system_health trace file with wildcard
    , BaseSystemHealthFileName AS (
        SELECT 
            REVERSE(SUBSTRING(REVERSE(FileName), CHARINDEX(N'\', REVERSE(FileName)), 255)) + N'system_health*.xel' AS FileNamePattern
        FROM CurrentSystemHealthTraceFile
        )
      --get xml_deadlock_report events from all system_health trace files
    , DeadLockReports AS (
        SELECT CAST(event_data AS xml) AS event_data
        FROM BaseSystemHealthFileName
        CROSS APPLY sys.fn_xe_file_target_read_file ( FileNamePattern, NULL, NULL, NULL) AS xed
        WHERE xed.object_name like 'xml_deadlock_report'
    )
--display 10 most recent deadlocks
SELECT TOP 10
      DATEADD(hour, DATEDIFF(hour, SYSUTCDATETIME(), SYSDATETIME()), event_data.value('(/event/@timestamp)[1]', 'datetime2')) AS LocalTime
    , event_data AS DeadlockReport
FROM DeadLockReports
ORDER BY LocalTime ASC;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Domyślna sygnatura czasowa programu SQL Server?

  2. Jak uzyskać nazwy kolumn z tabeli w SQL Server?

  3. Dodawanie wielu sparametryzowanych zmiennych do bazy danych w c#

  4. Ile razy dany znak pojawia się w ciągu znaków

  5. 3 metody łączenia pliku MDF z serwerem SQL