Làm cách nào để tìm một truy vấn chạy dài với ID tiến trình, tên quy trình, thời gian đăng nhập, người dùng, thời gian bắt đầu và thời lượng?


23

Bất cứ ai có thể giúp tôi tìm một chi tiết dưới đây cho truy vấn chạy dài. ProcessID, tên tiến trình, cơ sở dữ liệu, máy chủ lưu trữ, người dùng, thời gian đăng nhập quá trình, thời gian bắt đầu truy vấn và thời lượng truy vấn.

Tôi đang tìm kiếm một truy vấn hoặc SP cung cấp cho tôi dữ liệu này.

Câu trả lời:


38

Như đã nhận xét, công cụ tốt nhất xung quanh là sp_whoIsActive của Adam Machanic . Nó có thể được sử dụng theo nhiều cách, để xem những gì đang chạy tại thời điểm bạn khởi chạy tập lệnh hoặc bạn có thể chạy nó trong các vòng lặp để theo dõi một số hành động cụ thể, ví dụ như các truy vấn chậm.

Để chạy trong một vòng lặp, hãy xem tại đây: Cách ghi nhật ký hoạt động bằng cách sử dụng sp_whoisactive trong một vòng lặp Để phát hiện các truy vấn chậm: Cách sử dụng sp_WhoIsActive để tìm các truy vấn máy chủ SQL chậm

Bạn có thể trực tiếp sử dụng DMV để nhận các truy vấn chậm nhất và hành động từ đó. Kiểm tra các truy vấn chẩn đoán của Glenn Berry .

Và cuối cùng bạn có thể sử dụng truy vấn này để tìm hầu hết các truy vấn tốn thời gian. Bạn có thể chơi xung quanh với dm_exec_query_stats để thêm nhiều dữ liệu hơn hoặc tham gia với những người khác để có thêm thông tin. Xin lưu ý rằng dmv sẽ bị xóa và được làm mới mỗi khi máy chủ được khởi động lại.

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;

CHỈNH SỬA

Một tùy chọn mới đã có sẵn từ lúc nào đó, First Reponder Kit . Là một tập hợp các tập lệnh, được cung cấp miễn phí theo giấy phép MIT bởi nhóm BrentOzar, sẽ giúp ích cho các nhiệm vụ khác nhau, bao gồm cả tập lệnh được OP yêu cầu. Chủ yếu sp_BlitzFirstsp_BlitzWho kịch bản cho trường hợp này.


10

Tôi rất muốn giới thiệu sp_whoisactive . Đó là SP của bên thứ ba, nhưng có thể cho bạn biết mọi thứ bạn đã liệt kê ở trên và hơn thế nữa. Đó là một công cụ đáng kinh ngạc để có trong kho vũ khí của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.