実動 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 ワイヤ プロトコル ドライバー][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 Wire Protocol driver][Microsoft SQL Server] '2016-09-29 00:00:00' 付近の構文が正しくありません。