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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 Morgan
13/01/2005 - 21:28 | Informe spam
Maestro, esto no es del todo cierto, en repetidas ocasiones se han hecho
consultas en el foro de vb de como accesar a una base de datos que se
encuentra en un cd, que como es sabido es de solo lectura, la unica forma
que se ha determinado para que no se cree el .ldb es abriendo en modo
exclusivo y de solo lectura.

Prueba manejar la base de datos con recorset desconectados, asi el proceso
de lectura y formateo de los campos no estarian accesando la base de datos.
y el .ldb estaria abierto por un lapso menor.

este un trozo de codigo para VB

' Open the connection
oCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\Pruebas\Datos.mdb;"

oRs.CursorLocation = adUseClient
oRs.Open "SELECT * from Alumnos", oCn, adOpenStatic, adLockReadOnly
oRs.ActiveConnection = Nothing
oCn.Close
Set oCn = Nothing

Saludos ... Miguel Angel Martínez Morgan ... 8-)
[ MS - MVP - Visual Basic ] [ Cancún, Quintana Roo, México ]
[ Todas las preguntas al foro, así nos beneficiamos todos ]

DISCLAIMER: «Este mensaje se proporciona "como está" sin garantías de
ninguna indole, y no otorga ningún derecho.»

Juan M Afan de Ribera wrote:
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
Respuesta Responder a este mensaje
#3 Juan M Afan de Ribera
14/01/2005 - 00:22 | Informe spam
Hola Morgan,

gracias por la respuesta. La verdad, es que no sabía que se pudieran
utilizar recordsets desconectados con asp.

Pero de todas formas, tengo una sospecha de qué es lo que puede estar
pasando. Esta tarde he hablado con el Buho y me ha estado poniendo al tanto
de las estadisticas de visitas que tiene en su pagina, entre la web, el
foro, etc, y todo lo hace con bases Access. No parece que sea un problema de
Access, ni del servidor, sino de algo que estaré haciendo mal.

Como siempre, puede ser la cosa más tonta del mundo. De hecho, es mi último
cartucho en cuanto a pruebas se refiere, y si es eso, no tiene nada que ver
con lo que tengo hecho con ASP. Podría ser (esto todavía no lo se, tengo que
probar mañana a ver si se vuelve a bloquear la bd) que tenía puesto - por
descuido - un contador de visitas gratuito en cada página, en vez de nada
más en la página principal. Había notado que una vez descargada por completo
cada página, todavía transcurría unas décimas de segundo en que la barra de
progreso del explorador mostraba el progreso de algún proceso de
transferencia. Creo que se debía a este contador (nedstatbasic) que enviaba
información a su base o lo que sea que haga. Pero ya te digo... todavía no
lo se, tendré que esperar a mañana a ver si la base resiste en las horas en
que hay un poco de afluencia de usuarios.

Muchas gracias por tu interés y tus comentarios.

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


"Morgan" escribió en el mensaje
news:uhR5v5a%
Maestro, esto no es del todo cierto, en repetidas ocasiones se han hecho
consultas en el foro de vb de como accesar a una base de datos que se
encuentra en un cd, que como es sabido es de solo lectura, la unica forma
que se ha determinado para que no se cree el .ldb es abriendo en modo
exclusivo y de solo lectura.

Prueba manejar la base de datos con recorset desconectados, asi el proceso
de lectura y formateo de los campos no estarian accesando la base de
datos.
y el .ldb estaria abierto por un lapso menor.

este un trozo de codigo para VB

' Open the connection
oCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\Pruebas\Datos.mdb;"

oRs.CursorLocation = adUseClient
oRs.Open "SELECT * from Alumnos", oCn, adOpenStatic, adLockReadOnly
oRs.ActiveConnection = Nothing
oCn.Close
Set oCn = Nothing

Saludos ... Miguel Angel Martínez Morgan ... 8-)
[ MS - MVP - Visual Basic ] [ Cancún, Quintana Roo, México ]
[ Todas las preguntas al foro, así nos beneficiamos todos ]

DISCLAIMER: «Este mensaje se proporciona "como está" sin garantías de
ninguna indole, y no otorga ningún derecho.»

Juan M Afan de Ribera wrote:
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






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida