【发布时间】:2015-09-09 12:00:01
【问题描述】:
最近我们升级了我们的一个应用程序,作为升级的一部分,数据库也从 SQL Server 2005 升级到 2008。我们使用 WMB 7.0 来处理用于应用程序的传入消息。
代理收到消息后,使用消息流中CURRENT_TIMESTAMP方法返回的值更新db中的列(datetime)。
UPDATE Database.DATABASENAME
SET MODIFIEDDATE = CURRENT_TIMESTAMP
在我们使用 SQL Server 2005 之前,这一切正常,但在使用 SQL Server 2012 时,我们在代理日志中收到此错误:
[IBM][ODBC SQL Server Driver][SQL Server]从字符转换日期和/或时间时转换失败。
在odbc.ini 文件中,我们使用了这个配置:
Driver=/opt/mqsi/ODBC/V6.0/lib/UKmsss24.so
Description=DataDirect 6.0 SQL Server Wire Protocol
Address= ADDRESSOFDB
Database= DATABASENAEM
AnsiNPW=Yes
QEWSD=40117
QuotedId=No
ReportDateTimeType=0
我还尝试在写入 db 之前转换时间戳:
DECLARE timestampChar CHARACTER;
SET timestampChar = CAST (CURRENT_TIMESTAMP AS CHARACTER FORMAT 'yyyy-MM-dd HH:mm:ss.SSS');
UPDATE Database.DATABASENAME
SET MODIFIEDDATE = CAST(timestampChar AS TIMESTAMP FORMAT 'yyyy-MM-dd HH:mm:ss.SSS')
我也试过 passthru :
PASSTHRU ('UPDATE Database.TRANSACTIONINSTALLMENT AS TI
SET UUID =?,
MODIFIEDDATE =?,
WHERE TI.TRANSACTIONID =? AND
TI.INVOLVEMENTNUMBER =? AND
TI.INSTALLMENTNUMBER =?',
techaccount.UUId,
currentTimestampChar,
cTransactionId,
techaccount.Reinsurer_Involvement_Number,
techaccount.Reinsurer_Involvement_Number,
techaccount.TechAccountAmtItem.InstalmentNbr);
但这也会导致同样的错误。请帮助任何人。
【问题讨论】:
标签: sql-server-2012 ibm-mq messagebroker