Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намеря причината за блокиране в sql сървър ro14?

Информацията за блокиране се улавя от system_health Разширено проследяване на събития по подразбиране. Няма нужда да включвате допълнителни флагове за проследяване.

Информация от xml_deadlock събитието може да се види от SSMS Object Explorer (Управление-->Разширени събития-->Сесии--system_health) или с T-SQL. По-долу е дадена примерна заявка за извличане на xml за заключване от целевия файл. Можете също така да запишете xml на застой във файл с xdl разширение и отворете файла в SSMS за графичен изглед на блокирането.

--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. Вместо тригер в SQL Server губи SCOPE_IDENTITY?

  2. разделете алфа и числови с помощта на sql

  3. Запазване на ORDER BY в SELECT INTO

  4. Използвайте CRYPT_GEN_RANDOM() за създаване на криптографско, произволно число в SQL Server

  5. възможно ли е да изберете EXISTS директно като бит?