[egenix-users] cursor.executedirect configurable?
M.-A. Lemburg
mal at egenix.com
Thu Sep 11 20:44:51 CEST 2008
On 2008-09-11 17:28, Brad Allen wrote:
>
> M.-A. Lemburg wrote:
>>
>> You have 8 '?' markers in your query, so that looks fine. However,
>> the query is rather complicated with respect to all the joins, so
>> it's possible that the ODBC driver doesn't parse the query correctly
>> and perhaps misses out on some of the parameter markers.
>>
>> It may also get confused by the "_3" aliases. Why the quotes and why
>> double-quotes instead of square brackets ?. What setting do you
>> use for QUOTED_IDENTIFIERS ?
>>
> I those "_3" aliases were created by Storm's ClassAlias; I discovered a
> parameter that would allow me to specify the name when creating the
> ClassAlias instances. That got rid of the "_3" aliases in the query, and
> there are no more quoted identifiers, and now the query is more
> readable. However, it still fails when using cursor.execute and succeeds
> when using cursor.executedirect.
Very strange indeed.
>> Some more general questions:
>>
>> Are you using the most recent SQL Server Native client on the
>> Windows machine ?
>>
> I was using the normal SQL Server driver; I changed to the SQL Server
> native client but am still seeing the same behavior. As far as whether
> it's the latest, it's the version that comes with Windows Server 2003
> Standard Edition Service Pack 3.
You can check the version number by looking at
connection.driver_version
I get 09.00.3042 for out installation of SQL Server native client.
connection.driver_name is 'SQLNCLI.DLL'.
>> How are you converting the params before using them on
>> cursor.execute() ?
>>
>
> I think Storm is handling that by building a tuple of a tuple of
> strings, just like we would normally pass to cursor.execute for bind
> parameters. I haven't checked to see exactly what it is doing there, but
> we aren't having any issues with parameter substitution for any of our
> other queries.
Ok, so it's not related to data conversion either.
Could you please try to run the query on a fresh new cursor
(ie. one that hasn't executed any queries yet) and see whether
that makes a difference ?
If that doesn't help, the next thing we could try is an
ODBC trace. These are the instructions to enable such a trace
on Windows:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcsetting_tracing_options.asp
If standard tracing doesn't work, you could try the
Visual Studio Analyzer:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcenabling_visual_studio_analyzer.asp
Note that tracing has to be enabled for the user account
that the application is using in MDAC 2.8. There's a
new option in MDAC 2.8 which also allows machine wide tracing
(which was the only option in MDAC 2.7 and prior versions):
http://support.microsoft.com/default.aspx?scid=kb;en-us;818489
Please send us the trace snippet for the query in question.
Thanks,
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Sep 11 2008)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
More information about the egenix-users
mailing list