[Quickfix-users] Sql Server ODBC issues
Brought to you by:
orenmnero
From: George M. C. <geo...@qu...> - 2006-09-22 20:41:08
|
Hi, this is an update on my earlier issue. I am using the ODBC log and store factories built from the quickfix_vs8.sln in version 1.12.4 of quickfix. I am using SQL Server, and my ODBC DataSource Administrator say that those drivers are version 2000.85.1117.00. I am using these connection strings: OdbcLogUser=xx OdbcLogPassword=yy OdbcStoreUser=xx OdbcStorePassword=yy OdbcLogConnectionString="DATABASE=quickfix;DRIVER={SQL Server};SERVER=DATASERVER;" OdbcStoreConnectionString="DATABASE=quickfix;DRIVER={SQL Server};SERVER=DATASERVER;" I turned on ODBC trace logging. It shows the following information codes when I try to connect: DIAG [01S00] [Microsoft][ODBC Driver Manager] Invalid connection string attribute (0) DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]Changed database context to 'dbMARKET'. (5701) DIAG [01S00] [Microsoft][ODBC Driver Manager] Invalid connection string attribute (0) DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]Changed database context to 'dbMARKET'. (5701) When subsequent SQL statements are executed against this connection, it blows up with the interop error I posted before, because, I believe, the table names are not fully qualified. I could not figure out why the database context is getting changed to dbMarket, and not quickfix, so I chose to address the problem by prefixing every table name in OdbcStore.cpp and OdbcLog.cpp with "quickfix.." This fixed that problem, and I can now set up an acceptor session, at least. You might consider using the fully qualified table names in case someone like me runs into this ODBC connection issue in the future. I think it is good practice to use fully qualified names for db objects in general isnt it? There are a couple of other issues too: -From time to time the trace log shows that inserts into messages_log are failing because a NULL is being inserted in the SESSION_QUALIFIER column, which is defined as NOT NULL in the sql create script. - The columns MESSAGES_LOG.TEXT and MESSAGES.MESSAGE are, at least in my database, being truncated - only the section of the text "8=FIX.4.4" exists. I see that the sql string is being built with a lot of backslashes - is that some kind of MYSQL escape char that MSSQL is not enjoying? thx George |