problem with asp web site recorsets (sqlserver2000) return esporadicaly EOF BOF -
02-22-2005
, 02:23 PM
Services or applications using ActiveX Data Objects (ADO) 2.0 or greater may
intermittently return empty recordsets on queries that should be returning
valid results. At the time the problem occurs, the same queries successfully
return the expected data when run from non-ADO sources, such as from ISQL in
Microsoft SQL Server. This problem predominantly occurs on multi-processor
computers but has also been known to occur on single-processor computers.
As a side effect, the following error may also occur if the application
tries to use the empty recordset:
ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted; the
operation requested by the application requires a current record.
Microsoft give a solution at the article
http://support.microsoft.com/kb/230101/EN-US/
but I did it all (I have mdac 2.8 installed and the problem still ocurrs).
I have to tell you that this problem doesnt occurs all the time. When my asp
aplication crashes all the recorset return the message :
ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted; the
operation requested by the application requires a current record.
this occurs for some minutes and then start woking again. I have to tell you
that the database is complitly functional when this occurs, and if I do the
same sql querys using query analizer, the sql server return valid results.
The way I can get it work again manualy is by pressing the button "unload"
at the IIS in the "home directory" tab at the apllication settings frame.
this makes the asp work again.
Note: (the iis is in one server and the sql is in other server (the database
server has 2 processors))
this is the way I connect to the database:
set Recordset6 = Server.CreateObject("ADODB.Recordset")
Recordset6.ActiveConnection = strConect
sql ="SELECT sinValorDominical FROM dbo.tblMarcastarifas with(NOLOCK)
WHERE idtipomarca=" & marcas & " and
datIniciaVigencia<'"+cstr(month(date))+"/"+cstr(day(date))+"/"+cstr(year(dat
e))+"' And
datFinVigencia>'"+cstr(month(date))+"/"+cstr(day(date))+"/"+cstr(year(date))
+"'"
Recordset6.Source=sql
Recordset6.CursorType = 0
Recordset6.CursorLocation = 2
Recordset6.LockType = 1
Recordset6.Open
Recordset6_numRows = 0
Recordset6.close
set Recordset6=nothing
any suggestions?????????? do I have to install any patch????? do I have to
do something in my iis????
note: this is an aplication on the intranet of the company and has a heavy
transactional job all the day over the database.
I can replicate the crashes of my web site, and that is when I run a
desktop visual basic application. this apllication works fine but has a long
transaction that blocks the sql database. After that aplication runs, the
web page crashes, and stay in that way for some minutes even though the
aplication ended the job in 20 seconds . Note that this is not the only
moment when my page crashes, so the solution is not to quit that aplication.
besides that
aplications runs only ones a week. |