2016-02-17 3 views
8

Cela ne tombe pas en panne dans ColdFusion 11, mais ne se bloque dans ColdFusion 2016accidents CFQUERY quand il y a des commentaires TSQL

SELECT * 
FROM dbo.Roles WITH (NOLOCK) 
WHERE Code IS NOT NULL 
AND  Active = 1 
AND  RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees 

enter image description here

Cela fonctionne bien dans les deux

SELECT * 
FROM dbo.Roles WITH (NOLOCK) 
WHERE Code IS NOT NULL 
AND  Active = 1 
AND  RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) 

est-il un paramètre pour restaurer le comportement original?

MISE À JOUR

Je pensais avoir un exemple minimal de la question, mais je ne. Voici la requête complète

SELECT '<ul>' + STUFF (
     (
     SELECT MIN(Role) AS "li/code", Code AS "li/span/b", 'Unsorted' AS "li/span/var" 
     FROM dbo.Roles WITH (NOLOCK) 
     WHERE Code IS NOT NULL 
     AND  Active = 1 
     AND  RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees 
     GROUP BY Code 
     FOR XML PATH ('') 
     ), 
     1,0,'' 

    ) + '</ul>' AS xmlRole 

Quand je tourne le débogage DB: Je reçois:

spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> OK 

spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> Statement[4].execute(String sql, int autoGeneratedKeys) 
spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> sql = SELECT '<ul>' + STUFF ((SELECT MIN(Role) AS "li/code", Code AS "li/span/b", 'Unsorted' AS "li/span/var" FROM dbo.Roles WITH (NOLOCK) WHERE Code IS NOT NULL AND Active = 1 AND RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees GROUP BY Code FOR XML PATH ('')), 1,0,'') + '</ul>' AS xmlRole 
spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> autoGeneratedKeys = 1 
spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>>  
java.sql.SQLException: [Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near ')'. ErrorCode=102 SQLState=HY000 
java.sql.SQLException: [Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near ')'. 
    at macromedia.jdbc.sqlserverbase.ddcw.b(Unknown Source) 
    at macromedia.jdbc.sqlserverbase.ddcw.a(Unknown Source) 

Notez que la chaîne SQL est sur une seule ligne. Quand le commentaire commence, ça ne finit pas. Tout après le -- reste comme un commentaire.

La gestion de l'espace blanc est activée. L'éteindre ne change pas le comportement. Le SQL généré est le même

+4

One de mes choses les moins préférées sur ColdFusion - lorsque vous effectuez une mise à niveau, les choses qui ont l'habitude de travailler commencent à se casser. –

+0

* ColdFusoin 10.5 * ColdFusion 10.5.1 –

+0

Je suis sûr qu'il y avait un problème comme celui-ci lors de la mise à niveau CF9 de CF8. Résoudre ce problème impliquait de désactiver la gestion des espaces blancs dans l'admin. Cela change-t-il quelque chose si vous désactivez la gestion des espaces blancs? De toute façon, défaire un bug. – haxtbh

Répondre