Tìm tất cả các truy vấn được thực hiện gần đây trên cơ sở dữ liệu


21

[Tôi là một lập trình viên T-SQL cấp độ mới bắt đầu]
[.. và hy vọng tôi đang ở đúng trang web trao đổi ngăn xếp]

Tôi muốn nhận một danh sách tất cả các truy vấn tôi đã thực hiện (ít nhất là những truy vấn tôi đã thực hiện hôm nay kể từ sáng). Tôi cần phải làm một báo cáo về thời gian thực hiện của các truy vấn.

Tìm kiếm trực tuyến không mang lại cho tôi nhiều thông tin hữu ích. Truy vấn duy nhất mà tôi tìm thấy trên mạng có vẻ khá gần là

SELECT
    deqs.last_execution_time AS [Time], 
    dest.TEXT AS [Query]
 FROM 
    sys.dm_exec_query_stats AS deqs
    CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY 
    deqs.last_execution_time DESC

Truy vấn này trả về một số kết quả kỳ lạ (hầu hết trong số đó là một loạt các sprocs). Hơn nữa, tất cả các kết quả này cho thấy các truy vấn được thực hiện kể từ chiều hôm nay (tôi cần truy vấn từ sáng).

Tôi không thể tìm thấy bất cứ điều gì trong các câu hỏi trước (nếu câu hỏi tương tự đã được hỏi, xin vui lòng chỉ cho tôi câu hỏi).

Tôi đã thấy một số đề xuất liên quan đến SQL Profiler, nhưng tôi đoán profiler sẽ chỉ giúp tôi nếu tôi đã bắt đầu theo dõi (sửa tôi nếu tôi sai).

Ai đó có thể gợi ý cho tôi cách tôi nên truy cập để nhận danh sách tất cả các truy vấn đã được thực hiện trên cơ sở dữ liệu từ sáng không (bao gồm cả thời gian thực hiện truy vấn) ..

[Sẽ rất hữu ích (không phải là một yêu cầu) nếu tôi cũng có thể bằng cách nào đó có được tên người dùng của người dùng đã thực hiện truy vấn]

Câu trả lời:


12

Truy vấn này trả về một số kết quả kỳ lạ (hầu hết trong số đó là một loạt các sprocs). Hơn nữa, tất cả các kết quả này cho thấy các truy vấn được thực hiện kể từ chiều hôm nay (tôi cần truy vấn từ sáng).

Đó là bởi vì bạn đang tìm kiếm trong bộ đệm thủ tục và các gói được sử dụng cho buổi sáng có thể không còn tồn tại ở đó (do áp lực bộ nhớ, khởi động lại máy chủ / cá thể, xóa thủ công bộ đệm cache, v.v.).

Cách thực sự để có được các truy vấn được thực thi đối với một thể hiện (hay cụ thể hơn là cơ sở dữ liệu) sẽ là tạo một Dấu vết SQL hoặc phiên Sự kiện mở rộng. Được tạo đúng, một trong hai sẽ cung cấp cho bạn thông tin bạn đang tìm kiếm.

Nếu bạn đang tìm kiếm số liệu thống kê thực hiện của sáng nay và chỉ sáng nay (tức là thiết lập các triển khai giám sát đã nói ở trên như một nhiệm vụ chủ động và phải làm trong thời gian tới là không đủ), thì trừ khi điều đó đã được tạo ra sẽ không có cách tự nhiên để có được thông tin này.

Để tham khảo trong tương lai, hãy bắt đầu với Dấu vết SQL ghi lại sự kiện SQL: StmtCompleted . Trong XE nó sẽ là sql_statement_completedsự kiện.

Theo tôi, thay vì tiếp tục tìm kiếm phần còn lại của thống kê thực hiện truy vấn, tôi sẽ bắt đầu dành thời gian để tìm ra cách thực hiện lại khối lượng công việc mà bạn đang cố gắng đo. Nhưng lần này trước đó, hãy thiết lập theo dõi / theo dõi thích hợp.


Tôi có thể lọc theo SQL: Cột dữ liệu StmtCompleted không?
Kiquenet
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.