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
|