Re: Huge memory comsumption of ADODB Connection object
- From: "Bob Barrows [MVP]" <reb01501@xxxxxxxxxxxxxxx>
- Date: Mon, 26 Nov 2007 21:40:29 -0500
I would be willing to bet that, with some thought, your complicated rules
could be accomplished without a cursor. However, I'm in no position to try
to win that bet.
As far as the server-based cursor affecting the Connection object, unless
results are being returned to the client via the cursor, there should be no
impact on the client from using a server-based cursor in a stored procedure.
Additionally, a Connection object is not a "data container", it's more of a
conduit between the database and an ADO data-receiver. So I'm unaware of any
reason for your problem.
Perhaps you could show us how you call that stored procedure ...
Kevin LZJ wrote:
Hi, Bob,
Thanks for your kind reply.
However, in my case, it's impossible to check whether same data
exists only by using "if exists (select ...)", I need to apply some
complicated rules for checking data, that's why I use cursor to get
each row. My question is: the procedure runs in Sybase Server, why it
makes ADODB Connection object comsume so much memory (in my
understanding, ADODB acts as a client ). Moreover, I first must
determine this problem come from ADODB (Microsoft), or SYBASE.
"Bob Barrows [MVP]" wrote:
Kevin LZJ wrote:
controlHi all,Basically - stop using the cursor in your procedure. It's not
I encountered such a problem: ADODB Connection comsumes huge
memory before it is closed.
I use VB to port some data from EXCEL file into SYBASE database.
For some reason, I first convert the EXCEL file to DBASE format,
then
use ADO Data Control to get data from DBASE file, finally, i use
ADODB to insert data into SYBASE database (using ADODB provider from
SYBASE corp). The problem is, I use a database stored procedure
to insert data in
which there is a cursor to check whether same data is existing. If
the content of cursor is more than 300 items, I found the memory
used increases greatly (in my case, there are about 600 data items
in the cursor, causing the memory used up to more than 2GB and
getting error
for the lack of memory). After some research, I found 2 points :
1). If I delete the cursor from the Stored Procedure, my app
uses memory normally.
2). Only when the ADODB connection is closed, can the huge
memory used be freed.
So, my question is: why the ADODB connection object uses such
huge memory even the stored procedure is running in the server?
And, how
can I get this problem worked out?
BTW, in my environment, the SYBASE Database Server also runs on
my laptop as well as the VB app does.
necessary. You will need to post this in a Sybase group to get the
correct syntax,
but in SQL Server I would do this:
IF EXISTS (SELECT * FROM table WHERE ...)
UPDATE table ...
ELSE
INSERT table (...
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get
a quicker response by posting to the newsgroup.
--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"
.
- Follow-Ups:
- Re: Huge memory comsumption of ADODB Connection object
- From: Kevin LZJ
- Re: Huge memory comsumption of ADODB Connection object
- References:
- Re: Huge memory comsumption of ADODB Connection object
- From: Bob Barrows [MVP]
- Re: Huge memory comsumption of ADODB Connection object
- From: Kevin LZJ
- Re: Huge memory comsumption of ADODB Connection object
- Prev by Date: Re: Huge memory comsumption of ADODB Connection object
- Next by Date: Re: Huge memory comsumption of ADODB Connection object
- Previous by thread: Re: Huge memory comsumption of ADODB Connection object
- Next by thread: Re: Huge memory comsumption of ADODB Connection object
- Index(es):
Relevant Pages
|
|