Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để tìm lý do bế tắc trong máy chủ sql ro14?

Thông tin bế tắc được ghi lại bởi system_health Theo dõi sự kiện mở rộng theo mặc định. Không cần bật cờ theo dõi bổ sung.

Thông tin từ xml_deadlock sự kiện có thể được xem từ SSMS Object Explorer (Management -> Extended Events -> Sessions - system_health) hoặc bằng T-SQL. Dưới đây là một truy vấn ví dụ để lấy xml deadlock từ tệp đích. Bạn cũng có thể lưu xml deadlock vào một tệp có xdl mở rộng và mở tệp trong SSMS để có chế độ xem đồ họa về bế tắc.

--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. Sửa lỗi Msg 8116 “Kiểu dữ liệu đối số varchar không hợp lệ cho đối số 1 của hàm session_context” trong SQL Server

  2. Khi nào tôi nên sử dụng dấu chấm phẩy trong SQL Server?

  3. Cách chỉ định vị trí của tệp dữ liệu và tệp nhật ký khi tạo cơ sở dữ liệu trong SQL Server

  4. Nhận danh sách các ngày giữa hai ngày bằng cách sử dụng một hàm

  5. Làm cách nào để tìm kiếm một chuỗi trong cơ sở dữ liệu SQL Server?