2016-02-17 26 views
8

To nie psuje w ColdFusion 11, ale psuje w ColdFusion 2016awarii cfquery gdy istnieją TSQL komentarze

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

To działa OK w obu

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

Czy istnieje ustawienie przywracające oryginalne zachowanie?

UPDATE

myślałem, że minimalny przykład problemu, ale ja nie. Oto pełna zapytania

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 

Po włączeniu DB debugowania: uzyskać:

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) 

Należy pamiętać, że SQL ciąg jest na jednej linii. Gdy komentarz się rozpocznie, nie kończy się. Wszystko po -- pozostaje jako komentarz.

Zarządzanie przestrzenią białą jest włączone. Wyłączenie go nie zmienia zachowania. Wygenerowany SQL jest taki sam

+4

One o moich najmniej ulubionych rzeczach związanych z ColdFusion - po uaktualnieniu rzeczy, które kiedyś działały, zaczynają się łamać. –

+0

* ColdFusoin 10.5 * ColdFusion 10.5.1 –

+0

Jestem pewien, że taki problem wystąpił podczas aktualizacji do CF9 z CF8. Rozwiązanie tego problemu wymagało wyłączenia zarządzania pustymi miejscami w administratorze. Czy to zmieni cokolwiek, jeśli wyłączysz zarządzanie pustymi przestrzeniami? Tak czy siak, usuń błąd. – haxtbh

Odpowiedz