Tôi đang cố chạy một truy vấn đơn giản để tìm các truy vấn có thời gian CPU trung bình cao nhất. Mã này được nghĩa đen copy-dán từ here:lỗi cú pháp trong CROSS ÁP DỤNG
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.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) AS st
ORDER BY total_worker_time/execution_count DESC;
Vấn đề là, SQL Server được phàn nàn về một lỗi cú pháp trong dòng 8 tại tham số để sys.dm_exec_sql_text
: qs.sql_handle
mà unhelpfully đọc
Incorrect syntax near '.'.
tôi không thể , đối với cuộc sống của tôi, tìm ra những gì sai với truy vấn. Bất kỳ ý tưởng?
Tôi hoàn toàn quên về mức độ tương thích! Tôi đang làm việc với SQL Server 2008 R2, nhưng mức độ tương thích được đặt thành 80 trên db cụ thể này (vì không có lý do chính đáng). – vlad
câu trả lời này hoạt động, nhưng có thể thực hiện một truy vấn như thế này trong một thủ tục được lưu trữ không? Bởi vì bạn không thể sử dụng 'USE master;' trong một thủ tục được lưu trữ. – jtate