Sto tentando di eseguire una query semplice per trovare le query con il tempo medio della CPU più elevato. Il codice è letteralmente la copia-incollato da here:Errore di sintassi in 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;
Il problema è che SQL Server si lamenta un errore di sintassi nella linea 8 al parametro da sys.dm_exec_sql_text
: qs.sql_handle
che legge inutilmente
Incorrect syntax near '.'.
non posso , per la vita di me, scopri cosa c'è di sbagliato nella query. Qualche idea?
Mi sono completamente dimenticato dei livelli di compatibilità! Sto lavorando con SQL Server 2008 R2, ma il livello di compatibilità è impostato su 80 su questo particolare db (per nessuna buona ragione). – vlad
questa risposta funziona, ma è possibile eseguire una query come questa in una stored procedure? Perché non puoi usare il comando 'USE master;' in una stored procedure. – jtate