Pregunta

Me veo obligado por la siguiente, no hay manera de evitarlo:

  1. de sólo lectura de datos: Microsoft Access
  2. JET 4.0 OLDB
  3. ASP.NET 2.0
  4. Host compartido, muy poco control.
  5. O Mapper - LLBL Gen Pro

La aplicación es una herramienta de sólo lectura que lee una gran cantidad de bases de datos Microsoft Access en la carpeta App_Data. Funciona bien en su mayoría.

Bajo carga que comienza a fallar acceder a los BMD de acceso.

¿Cuál es la mejor estrategia para acceder a los BMD de acceso para limitar errores en el acceso ellos? En este momento lo intento, a continuación, Thread.Sleep (500) en un error y vuelva a intentarlo.

¿Fue útil?

Solución

Creo que puede haber formas de modificar el aislamiento / concurrencia / opciones de bloqueo al acceder a las bases de datos Access para eliminar la sobrecarga de administración de cerraduras. Quizás intente "Modo = Compartir Denegar none;" en la cadena de conexión. Yo no usaría esto si va a modificar los datos en cualquier forma en cualquier momento, ya que aunque es más o menos tirar toda la gestión de aislamiento / concurrencia que se obtiene con una base de datos. Utilice a su propio riesgo.

Otros consejos

¿Con qué frecuencia lo hace el cambio de datos? Si se trata de sólo lectura se puede cargar los datos de las bases de datos en caché y leerla desde allí en lugar de directamente de las bases de datos?

¿Qué tipo de errores específicos que consiguen. Asumo que son errores de conexión?

Esta es una solución horrible, pero si realmente está "perdido en una isla desierta con sólo estas herramientas" y las bases de datos de acceso están por completo, a continuación, crear varias copias de cada uno de ellos y permitir que sólo un cierto número de conexión de sólo lectura en ninguna de ellas a la vez. Por ejemplo, si usted tiene 2 bases de datos de acceso, MdbAA y MdbBB a continuación, crear copias como:

  • MdbAA01
  • MdbAA02
  • MdbAA03
  • MdbBB01
  • MdbBB02
  • MdbBB03

Luego, cuando llega una petición para MdbAA, ver cuántas peticiones están accediendo MdbAA01, si el umbral, a continuación, tratar MdbAA02, etc. Haga lo mismo para todas las solicitudes en el archivo MdbBB.

Como he dicho esto es muy mala solución pero si realmente no tienen otra opción, entonces podría funcionar para usted. Pero en realidad suena como la aplicación ha superado acceso (y el servidor compartido) por lo que es hora de actualizar la arquitectura.

Pase un poco de dinero y conseguir un poco de almacenamiento de SQL. ¿Cuánto tiempo has estado trabajando en el ajuste de una muleta para un sistema de sonido roto?

Si el proyecto vale la pena hacer entonces vale la pena invertir algo de dinero contante y sonante.

Si una empresa está tratando de forzar abajo de esta ruta, explicar por qué la opción que tiene no es viable. Si usted sugirió la opción, en primer lugar, hacer crecer un par y explicar por qué te has equivocado, pero así es como se puede arreglar.

Lo siento si que sale como impertinente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top