Tôi cũng gặp sự cố này. SQL Profiler không nắm bắt được tuyên bố sp_prepare
vì nó xảy ra trước khi theo dõi SQL Profiler đã bắt đầu chạy. Các bài đăng khác nhau dựa trên sys.dm_exec_sql_text
không hữu ích vì tôi không thể tìm thấy giá trị sql_handle
hoặc plan_handle
chính xác để cung cấp cho quy trình được lưu trữ đó.
Tôi tìm thấy một giải pháp từ this blog post: trong SQL Profiler, nhấp vào "Hiển thị tất cả các sự kiện" hộp kiểm và sau đó theo "Stored Procedure" nhóm chọn "SP: CacheHit".
Trong các kết quả đầu ra SQL Profiler, bạn sẽ thấy một "SP: CacheHit" hàng chứa tuyên bố cache SQL gần bạn "RPC: Bắt đầu từ ... sp_execute" tuyên bố.
Sau đó bạn có thể tái tạo lại và reexecute các câu lệnh SQL đầy đủ trong SSMS xem bạn có muốn sử dụng:
exec sp_executesql @stmt=N'{statement from SP:CacheHit}',
@params=N'{parameter declaration from SP:CacheHit}',
@param1={value}, {...parameters from RPC:Starting sp_execute statement}
Nguồn
2014-01-03 17:08:27
Bạn có thực sự sử dụng các hồ sơ sql? – Rodrigo
Nó sẽ là [tình trạng bình thường/mong muốn] (http://www.sql-server-performance.com/forum/threads/sp_prepare-and-sp_execute.14685/) để có nhiều lệnh gọi 'sp_execute' hơn các tệp theo dõi so với các cuộc gọi 'sp_prepare'. Đối với việc tìm kiếm (tham số) SQL gắn với xử lý chuẩn bị, tôi sẽ xem xét thông qua các lược đồ của các bảng hệ thống SQL Server cho các cột có tên là "xử lý" hoặc "kế hoạch truy vấn" các loại sự vật. – hardmath