生产 IBM WebSphere 集成总线的 ESQL 计算节点包含以下 ESQL 查询:
SET result[] =
SELECT p.Id, p.Date, p.Value
FROM DatabaseName.dbo.TableName AS p
WHERE p.Date >= InputRoot.XMLNSC.ns:RequestType.Request.DateFrom
AND p.Date <= InputRoot.XMLNSC.ns:RequestType.Request.DateTo;
DateFrom
并且DateTo
在 XSD 中被描述为xsd:dateTime
,因此被视为TIMESTAMP
。
集成总线产生以下查询:
SELECT p.Id, p.Date, p.Value
FROM DatabaseName.dbo.TableName as p
WHERE p.Date < TIMESTAMP'2016-01-02 00:00:00' and p.Date >= TIMESTAMP'2016-01-01'
这是不正确的并导致异常
[IBM][ODBC SQL Server Wire Protocol driver][Microsoft SQL Server]
'2016-09-29 00:00:00' 附近的语法不正确
更奇怪的是,测试 IBM WebSphere 运行良好并且不会生成这个奇怪的“TIMESTAMP”前缀,而生产集成总线是测试集成总线虚拟机的完整克隆。
测试和生产远程数据库的 SQL Server 版本及其兼容性级别相同(SQL Server 2008 R2;80)。
异常详情:
目录 = 'BIPmsgs'
编号 = 2322
文本 = 子 SQL 异常
文件 = '/build/S1000_slot1/S1000_P/src/DataFlowEngine/MessageServices/ImbOdbc.cpp'
行 = 3776
函数 = 'ImbOdbcStatement::checkRcInner'SQL 状态 = HY000本
机错误代码 = 102
错误文本 = [IBM][ODBC SQL Server 有线协议驱动程序][Microsoft SQL Server]“2016-09-29 00:00:00”附近的语法不正确。