Problemas de bloqueo con una bd Access

11/01/2005 - 19:09 por Juan M Afan de Ribera | Informe spam
Hola a todos,

estoy teniendo problemas de bloqueo con una bd Access a la cual accedo a
través de ASP. Esta bd es la que contiene los temas del primer enlace de mi
firma. Mis conocimientos sobre ASP y el funcionamiento de servidores es
bastante limitado. Como no sé qué datos pueden ser útiles para daros alguna
pista, tal vez me enrrolle un poco en mi exposición (pido disculpas por
adelantado).

Primero de todo he de decir que he revisado, vuelto a revisar, recontra
revisar y cambiar el código desde hace un mes aproximadamente, por si en
algún lugar de ese código hubiera algo que dejara un recordset o la conexión
a la bd abiertos, pero sinceramente, no he encontrado nada de eso.

El problema viene porque a ciertas horas del día (sobre todo por la tarde,
pero tampoco esto es determinante) si intento acceder a la página, noto que
se demora demasiado, e incluso a veces se agota el tipo de espera y obtengo
el típico mensaje de error. En esos momentos he hecho la prueba de
conectarme via ftp al sitio donde está alojada la bd y veo que además de la
bd, hay un archivo tipo ldb, que es el tipo de archivo que access crea
cuando una bd está abierta. Esto no debería ocurrir, pues las consultas a la
base de datos son de sólo lectura, no actualizo, ni inserto, ni borro ningún
registro, sólo extraigo la información contenida en campos de tipo texto o
tipo memo, los cuales tienen los textos, títulos, artículos, etc, de la
página.

La técnica que empleo para construir las páginas consiste en, al principio
de cada página, abrir una conexión a la bd e ir llamando a una serie de
funciones que extraen la información de la bd, para ponerla formateada con
html en una serie de variables. Después cierro la conexión. En esquema,
podría ser algo así:

<html>
<head>
alguna cosa del html por aquí y por allá...
<%
Dim con, Titulo, Parrafo1, Parrafo2, Parrafo3

Set con = Server.CreateObject("ADODB.Connection")
' ... establezco la conexión

Titulo = FuncionExtraeTitulo(con)
Parrafo1 = FuncionExtraeParrafo1(con)
Parrafo2 = FuncionExtraeParrafo2(con)
Parrafo3 = FuncionExtraeParrafo3(con)

con.Close
Set con = Nothing
%>
... aquí algo de html
<title><% = titulo %><head>
<body>
... aquí algo de html
<% = Parrafo1 %>
... aquí algo de html
<% = Parrafo2 %>
... aquí algo de html
<% = Parrafo3 %>
</bdy>
<html>

En estas funciones "FuncionExtraeParrafo" básicamente se abre un recordset,
se extrae una información de unos campos, se le da formato html, dependiendo
de la tabla que estemos consultando y se devuelve el texto formateado, para
después ponerlo en la variable correspondiente (Parrafo1, Parrafo2, etc).

La única teoría que tengo de lo que puede estar pasando es que mientras se
esté ejecutando el proceso de formatear el texto con un recordset, se
produzca una segunda llamada a la bd. Esta segunda llamada, no se por qué,
podría ser la que provocara el que se abriera un archivo del tipo ldb
(archivo de bloqueos de Access) y entonces, tampoco sé cómo, una conexión a
la bd queda abierta. A partir de aquí, hay que esperar entre 5 -10 minutos
para que el acceso a la página (y a la bd, claro) se restablezca.

¿Alguien puede iluminarme un poco en lo que puedo estar haciendo mal o
aportarme alguna pista?

Muchas gracias por leerme hasta aquí y perdonad por el rollo.

Saludos,
Juan M. Afán de Ribera
[MVP Access]
http://www.accessvbafaq.mvp-access.com
http://www.mvp-access.com/juanmafan
 

Leer las respuestas

#1 Juan M Afan de Ribera
13/01/2005 - 00:42 | Informe spam
En fin, como decimos en el grupo de Access, o no he formulado la pregunta
bien (lo más probable) o que a lo mejor la pregunta sea demasiado compleja
para resolverse.

Tal vez pueda hacer otra pregunta que podría resumir un poco el problema que
tengo con esta bd de Access.

¿Qué razones pueden darse para que la conexión a una bd se quede abierta
utilizando ASP - VBScript, aparte de la razón de dejar algún objeto sin
cerrar o sin liberar memoria?

Cualquier idea o comentario será bien recibido. Muchas gracias.

Saludos,
Juan M Afan de Ribera
[MVP Access]
http://www.accessvbafaq.mvp-access.com
http://www.mvp-access.com/juanmafan


"Juan M Afan de Ribera" escribió en el mensaje
news:%23T0iqiA%
Hola a todos,

estoy teniendo problemas de bloqueo con una bd Access a la cual accedo a
través de ASP. Esta bd es la que contiene los temas del primer enlace de
mi firma. Mis conocimientos sobre ASP y el funcionamiento de servidores es
bastante limitado. Como no sé qué datos pueden ser útiles para daros
alguna pista, tal vez me enrrolle un poco en mi exposición (pido disculpas
por adelantado).

Primero de todo he de decir que he revisado, vuelto a revisar, recontra
revisar y cambiar el código desde hace un mes aproximadamente, por si en
algún lugar de ese código hubiera algo que dejara un recordset o la
conexión a la bd abiertos, pero sinceramente, no he encontrado nada de
eso.

El problema viene porque a ciertas horas del día (sobre todo por la tarde,
pero tampoco esto es determinante) si intento acceder a la página, noto
que se demora demasiado, e incluso a veces se agota el tipo de espera y
obtengo el típico mensaje de error. En esos momentos he hecho la prueba de
conectarme via ftp al sitio donde está alojada la bd y veo que además de
la bd, hay un archivo tipo ldb, que es el tipo de archivo que access crea
cuando una bd está abierta. Esto no debería ocurrir, pues las consultas a
la base de datos son de sólo lectura, no actualizo, ni inserto, ni borro
ningún registro, sólo extraigo la información contenida en campos de tipo
texto o tipo memo, los cuales tienen los textos, títulos, artículos, etc,
de la página.

La técnica que empleo para construir las páginas consiste en, al principio
de cada página, abrir una conexión a la bd e ir llamando a una serie de
funciones que extraen la información de la bd, para ponerla formateada con
html en una serie de variables. Después cierro la conexión. En esquema,
podría ser algo así:

<html>
<head>
alguna cosa del html por aquí y por allá...
<%
Dim con, Titulo, Parrafo1, Parrafo2, Parrafo3

Set con = Server.CreateObject("ADODB.Connection")
' ... establezco la conexión

Titulo = FuncionExtraeTitulo(con)
Parrafo1 = FuncionExtraeParrafo1(con)
Parrafo2 = FuncionExtraeParrafo2(con)
Parrafo3 = FuncionExtraeParrafo3(con)

con.Close
Set con = Nothing
%>
... aquí algo de html
<title><% = titulo %><head>
<body>
... aquí algo de html
<% = Parrafo1 %>
... aquí algo de html
<% = Parrafo2 %>
... aquí algo de html
<% = Parrafo3 %>
</bdy>
<html>

En estas funciones "FuncionExtraeParrafo" básicamente se abre un
recordset, se extrae una información de unos campos, se le da formato
html, dependiendo de la tabla que estemos consultando y se devuelve el
texto formateado, para después ponerlo en la variable correspondiente
(Parrafo1, Parrafo2, etc).

La única teoría que tengo de lo que puede estar pasando es que mientras se
esté ejecutando el proceso de formatear el texto con un recordset, se
produzca una segunda llamada a la bd. Esta segunda llamada, no se por qué,
podría ser la que provocara el que se abriera un archivo del tipo ldb
(archivo de bloqueos de Access) y entonces, tampoco sé cómo, una conexión
a la bd queda abierta. A partir de aquí, hay que esperar entre 5 -10
minutos para que el acceso a la página (y a la bd, claro) se restablezca.

¿Alguien puede iluminarme un poco en lo que puedo estar haciendo mal o
aportarme alguna pista?

Muchas gracias por leerme hasta aquí y perdonad por el rollo.

Saludos,
Juan M. Afán de Ribera
[MVP Access]
http://www.accessvbafaq.mvp-access.com
http://www.mvp-access.com/juanmafan



Preguntas similares