2016-02-17 11 views
8

Dieser stürzt nicht in Coldfusion 11, aber tut Absturz in Coldfusion 2016cfquery stürzt ab, wenn es Tsql Kommentare

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

Dies funktioniert OK in beiden

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

Gibt es eine Einstellung, um das ursprüngliche Verhalten wiederherzustellen?

UPDATE

Ich dachte, ich ein minimales Beispiel für das Problem hatte, aber ich tat es nicht. Dies ist die komplette Abfrage

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 

Wenn ich auf DB-Debugging drehen: Ich bekomme:

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) 

Beachten Sie, dass die SQL-Zeichenfolge in einer Zeile ist. Wenn der Kommentar beginnt, endet er nicht. Alles nach dem -- bleibt als auskommentiert.

Die White-Space-Verwaltung ist eingeschaltet. Wenn Sie es deaktivieren, ändert sich das Verhalten nicht. Die generierte SQL ist die gleiche

+4

One meiner am wenigsten Lieblings-Dinge über ColdFusion - wenn Sie upgraden, beginnen Dinge, die zu arbeiten begannen, zu brechen. –

+0

* ColdFusoin 10.5 * ColdFusion 10.5.1 –

+0

Ich bin sicher, es gab ein Problem wie dies beim Upgrade auf CF9 von CF8. Die Lösung bestand darin, das White Space Management im Admin auszuschalten. Ändert dies etwas, wenn Sie die White-Space-Verwaltung deaktivieren? Wie auch immer, entschuldigen Sie einen Fehler. – haxtbh

Antwort