Je lis un article de this website, mais quand je lance le code article fourni, je reçois l'erreur:Quel est le problème avec cette instruction select T-SQL?
Msg 102, Level 15, State 1, Line 16
Incorrect syntax near '.'.
Je revérifié la syntaxe et ne peut pas trouver la cause de cette erreur. Le code est le suivant, formaté par SQL Prompt.
Quelqu'un peut-il m'aider? Grand merci.
SELECT es.session_id ,
es.host_name ,
es.login_name ,
er.status ,
DB_NAME(database_id) AS DatabaseName ,
SUBSTRING(qt.text, (er.statement_start_offset/2) + 1, ((CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset
END - er.statement_start_offset)/2) + 1) AS [Individual Query] ,
qt.text AS [Parent Query] ,
es.program_name ,
er.start_time ,
qp.query_plan ,
er.wait_type ,
er.total_elapsed_time ,
er.cpu_time ,
er.logical_reads ,
er.blocking_session_id ,
er.open_transaction_count ,
er.last_wait_type ,
er.percent_complete
FROM sys.dm_exec_requests AS er
INNER JOIN sys.dm_exec_sessions AS es ON es.session_id = er.session_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
CROSS APPLY sys.dm_exec_query_plan(er.plan_handle) qp
WHERE es.is_user_process = 1
AND es.session_Id NOT IN (@@SPID)
ORDER BY es.session_id
Edit:
Je lance la requête supérieure à l'aide SSMS 2008 contre une base de données SQL Server 2005. Lorsque j'essaie d'utiliser SSMS 2005 exécuter la même requête sur une base de données SQL Server 2005, tout fonctionne correctement. Comme je le sais, SSMS 2008 peut se connecter à une base de données SQL Server 2005 et opérer dessus, non? J'ai aussi essayé un autre exemple, listé ci-dessous. C'est vraiment simple. De même, il s'exécute avec succès lors de l'utilisation de SSMS 2005 contre SQL Server 2005. Lors de l'utilisation de SSMS 2008 contre SQL Server 2005, il renvoie la même erreur que celle mentionnée précédemment.
SELECT stat.sql_handle ,
sqltext.text SQL
FROM sys.dm_exec_query_stats stat
CROSS APPLY sys.dm_exec_sql_text(stat.sql_handle) sqltext
Quelqu'un at-il une idée à ce sujet?
Merci.
Edit 2:
Juste essayé, en utilisant SSMS 2008 contre SQL Server 2008 fonctionne très bien.
Je ne le vois pas tout de suite mais j'essaierais d'affiner le problème en sélectionnant d'abord * au lieu de la liste des champs. Cela vous donnera au moins une idée de la partie avec laquelle il a des problèmes. –
Oui, j'ai changé la colonne en * et toujours obtenir l'erreur. Donc, je pense que l'erreur vient de la partie de. Mais la partie de est assez simple et je ne peux pas trouver quelque chose d'intéressant. –