Próbuję uruchomić proste zapytanie, aby znaleźć zapytania o najwyższym średnim czasie pracy procesora. Kod jest dosłownie kopia wklejony od here:błąd składniowy w CROSS APPLY
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;
Problem jest, SQL Server narzeka błąd składni w linii 8 w parametrze do sys.dm_exec_sql_text
: qs.sql_handle
który unhelpfully czyta
Incorrect syntax near '.'.
nie mogę , dla mojego życia, dowiedz się, co jest nie tak z zapytaniem. Jakieś pomysły?
Całkowicie zapomniałem o poziomach kompatybilności! Pracuję z SQL Server 2008 R2, ale poziom kompatybilności jest ustawiony na 80 na tym konkretnym db (bez ważnego powodu). – vlad
ta odpowiedź działa, ale czy można wykonać takie zapytanie w procedurze przechowywanej? Ponieważ nie można użyć 'USE master;' w procedurze przechowywanej. – jtate