That explanation makes perfect sense. The restriction being in the SQL
Server driver and not on ODBC itself is a good distinction.

Thanks  :-)

Steve H.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of
Nick Gorham
Sent: Saturday, September 29, 2001 1:29 PM
To: Steve Howard
Cc: Tim Harsch; [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: Re: selector screws do in ODBC 0.28


Steve Howard wrote:

> Nick,
>
> Picky is good. It was my understanding that this was an ODBC restriction.
> I've also seen the same error in the test bed in applications written in C
> and Java and that was the explanation we had come to accept

No its a restriction of the SQL Server ODBC driver, not ODBC itself, there
is a SQLGetInfo
call (SQL_MAX_CONCURRENT_ACTIVITIES) that allows the application to check on
this. I have to
use this in both our SQLEngine and Kylix dbExpress driver to alter the
operation, and create
additional connections as required.

> I'm not arguing with you, but if the restriction is with SQL Server, then
my
> understanding of something else needs to change. I might have a nebulous
> grasp on how this can be, but I would like to hear from someone else to
> (match|firm) up what I'm thinking.

Well the restriction is with TDS the network protocol that SQL Server (And
Sybase) uses. put
simply in non dynamic mode one a query is executed dat just comes back, and
keed comming
untill the end, so there is no way (other that a cancel) to do anything else
on that
connection until all the results have come back. The ODBC driver checks this
for forward
only stmts, but for dynamic it doesn't. With these the data comes back a row
at a time, so
you can in theory muliplex statements. However the problem is that unless
all the data is
returned the protocol stream gets confused, hence the spin wait.

> The following ISQL script does the same sort of thing (it's bad practice
to
> grant permissions to individual users, but it works as an example), but
will
> not return an error, even though the grant is being executed while the usr
> cursor is still active in the established connection. Looking at the
current
> activity while it takes place, it looks as if it handles it as a whole and
> not as individual statements (That's my current theory on how it's
possible
> in an ISQL script), but profiler still shows a statement being prepared,
> executed, and individual fetches being done, and the grant statement being
> executed while usr is still active, and I don't see any additional
> connections being made - only the existing connection is referred to. Do
you
> have a moment to take on explaining this?

Well I would guess its because the script is operating on the server where
the protocol
restrictions dont apply, so there will be no such problem.

Of course I could be wrong, this is all just summise. MS could give you a
exact answer, but
I doub't they would :-)

--
Nick Gorham
Emacs would be a great operating system if it just had a decent text
editor...


Reply via email to