Problemas con MS Access como un front-end para una base de datos MySQL de la base de datos back-end?

StackOverflow https://stackoverflow.com/questions/5842

  •  08-06-2019
  •  | 
  •  

Pregunta

Dos usuarios querían compartir la misma base de datos, originalmente escrito en MS Access, sin conflicto el uno con el otro a través de un único archivo MDB.

Me mudé las tablas a partir de una simple base de datos MS Access a MySQL usando su Kit De Herramientas De Migración (que funciona bien, por cierto) y configurar el Acceso a enlace de las tablas a través de ODBC.

Hasta el momento, me he topado con lo siguiente:

  • No se puede insertar/actualizar/eliminar filas en una tabla sin clave principal (no hay sorpresa).
  • Los campos autonumérico en MS Access debe ser la clave principal o simplemente vas a terminar como las columnas de enteros en MySQL (natch, ¿por qué no se el PK?)
  • Las tablas se han migrado a MySQL el tipo de tabla InnoDB, pero el Acceso a las relaciones no se convirtió en MySQL las restricciones de clave externa.

Una vez que la base de datos está en uso, se puede esperar cualquier otro tema?Especialmente cuando ambos usuarios están trabajando en la misma mesa?

¿Fue útil?

Solución

Yo tenía una aplicación que funcionaba del mismo modo:un MS Access frontend para un motor MySQL.Fue un enorme dolor que terminé de escribir una Win32 frontend en su lugar.Desde la parte superior de mi cabeza, me he encontrado con los siguientes problemas:

  • El desarrollo del vínculo ODBC parece haber dejado hace mucho tiempo.Hay varias versiones diferentes flotando --- muy confuso.El vínculo ODBC no admite Unicode/UTF8, y recuerdo que había otros problemas con él (aunque algunos podrían ser superados por el cuidado de configuración).
  • Usted probablemente desea ajustar manualmente su esquema db para hacerla compatible con MS Access.Veo que ya se enteró de la necesaria claves de suplente (es decir, int llave primaria) :-)
  • Usted debe tener en cuenta que puede necesitar el uso de consultas de paso a través para hacer más sofisticado de SQL manipulación de la base de datos MySQL.
  • Ser cuidadoso con el uso de un montón de VBA, como que tiende a corromper su frontend archivo.Regularmente la compresión de la base de datos (usando el menú principal, Herramientas | utilidades de Base de datos | Comprimir y restaurar, o algo por el estilo --- estoy usando la versión en holandés), y por lo muchas de copias de seguridad es necesario.
  • Acceso tiende a causar un montón de tráfico de la red.Como, realmente enorme montón.No he sido capaz de encontrar una solución para eso.El uso de un monitor de red es recomendable si desea mantener un ojo en eso!
  • Acceso insiste en el almacenamiento de los booleanos 0/-1.En mi humilde opinión, 0/+1 tiene más sentido, y creo que es la forma por defecto de hacer las cosas en MySQL así.No es un gran problema, pero si casillas no funcionan, definitivamente, usted debe comprobar esto.

Una posible alternativa sería poner el motor (con los datos) en una unidad compartida.Recuerdo que esto está bien documentado, también en la ayuda.Puede que desee echar un vistazo a algunos consejos generales sobre la división en un frontend y un backend y código que se vuelve a conectar automáticamente con el servidor en el inicio;También puedo enviar algunas muestras de código, o a publicar aquí.

De lo contrario, puede que también desee considerar la posibilidad de MS SQL.No tengo experiencia con eso, pero supongo que funciona junto con MS Access mucho más agradable!

Otros consejos

Sé que este tema no es demasiado dulce, pero sólo algunas explicaciones adicionales:

Si desea usar MS Access de manera efectiva, especialmente con los más grandes, las bases de datos multiusuario, por favor haga lo siguiente:

  • dividir el MDB en la aplicación frontend y backend (sólo datos) archivos - usted va a tener dos archivos MDB de entonces.

  • migrar todas las tablas con los datos y la estructura en la base de datos externa.Puede ser:MySQL (funciona muy bien, no hay limitaciones de tamaño de la base de datos, requiere de algunas habilidades más como no MS de la tecnología, pero es una buena opción en muchos casos - por otra parte usted puede escalar su backend con más memoria RAM y de Cpu adicionales, así que todo depende de sus necesidades y de las capacidades de hardware);Oracle (si usted tiene suficiente dinero o algún tipo de licencia de la empresa) o de Oracle 10g XE (si esto no es un problema, que el tamaño de base de datos está limitado a 4 GB y siempre utilice 1 GB de RAM y 1 CPU), MS SQL Server 2008 (es un gran par para tener MS Access frontend y MS SQL Server backend en todos los casos, pero usted tiene que pagar por la licencia!- ventajas son:cerca de integración, ambas tecnologías se forma el mismo proveedor;MS SQL Server es muy fácil mantener una efectiva al mismo tiempo) o Express edition (la misma historia como con Oracle XE - casi las mismas limitaciones).

  • volver a vincular su MS Access interfaz con la base de datos.Si ha seleccionado MS SQL Server para el backend, a continuación, va a ser tan fácil como usar el asistente de MS Access.Para MySQL - usted tiene que utilizar controladores ODBC (es muy sencillo y funciona muy bien).Para Oracle - por favor, no utilice los controladores ODBC de Microsoft.Estos de Oracle hará su trabajo mucho mejor (se puede comparar el tiempo necesario para la ejecución de la consulta SQL de MS Access a Oracle a través de ODBC de Oracle y MS controladores ODBC de Oracle).En este punto usted tendrá sólida base de datos de backend y totalmente funcional de MS Access frontend - archivo MDB.

  • compilar el MDB frontend para MDE - le dará un montón de velocidad.Por otra parte, es la única forma razonable de la distribución de MS de Acceso de la aplicación a los usuarios finales.

  • para el trabajo diario de uso de archivo MDE con MS Access frontend.Para más MS Access desarrollo del frontend uso de archivos MDB.

  • no use mal escrito componentes de ActiveX para mejorar el Acceso del MS interfaz de capacidades.Mejor escribir usted mismo o comprar el apropiado.

  • no creo en los mitos que hay un montón de problemas con MS Access - este es un gran producto que puede ayudar en mayo de ocasiones.El problema es que mucha gente piense que es un juguete o que MS Access es en general sencillo.Suelen generar una gran cantidad de errores y problemas por sí mismos y de su falta de conocimiento y experiencia.Para tener éxito con MS Access es importante entender que esta herramienta - esta es la misma norma, al igual que con cualquier otra tecnología de outhere.

Puedo decirles que estoy usando bastante avanzado de MS Access frente a MySQL backend y estoy muy satisfecho (como un desarrollador que es el mantenimiento de esta aplicación).Mis amigos, los usuarios también son satisfechas se sienten muy cómodos con la interfaz gráfica de usuario (frontend), la velocidad (MySQL), ellos no tienen problemas con los registros de bloqueo o de rendimiento de base de datos.

Por otra parte, es importante leer mucho acerca de las buenas prácticas y las experiencias de otras personas.Yo diría que en muchos de los casos de MS Access es una buena solución.Conozco a un montón de dedicado y hecho a medida, sistemas que comenzó como un experimento en forma de privado de base de datos MS Access (MDB) y luego evolucionó a:dividido en MS Access (MDE - frontend, MDB - backend) y, finalmente, a:MS Access frontend (MDE) y "seria" backend de base de datos (principalmente de MS SQL Server y MySQL).También es importante que usted siempre puede usar su solución de Acceso de MS como un prototipo de trabajo - se ha preparado para el uso de backend en su base de datos (MySQL - supongamos) y puede reescribir frontend a la tecnología de su elección (solución web?tal vez escritorio aplicación de C# - lo que usted necesita!).

Espero que me ayudó a algunos de ustedes de considerar el trabajo con MS Access.

Saludos, Wawrzyn http://dcserwis.pl

Gareth Simpson opinó:

Si es sólo dos usuarios, el Acceso deben hacer muy bien si pones el .mdb en una unidad compartida.

Er, no.No hay Acceso multi-usuario de la aplicación para que cada usuario no debe tener un dedicado copia de la parte delantera.Eso significa que cada usuario debe tener un MDB en su estación de trabajo.Por qué?Debido a que los objetos en los extremos delanteros no compartir (no tan bien como los de Chorro de tablas de datos, aunque no hay ninguno de los que en este escenario el uso de MySQL como el back-end).

Gareth Simpson continuación:

Creo que el máximo recomendado usuarios concurrentes para el Acceso es de 5 pero en alguna ocasión he empujado más allá de este y nunca despegarán.

No, esto es totalmente incorrecto.El límite teórico para los usuarios de una MDB es de 255.Eso no es realista, por supuesto, como una vez que alcance unos 20 usuarios a los que tienen a su programa de Acceso de la aplicación con cuidado para que funcione bien (a pesar de las cosas que usted necesita hacer en el Acceso-a-Jet de la aplicación son el mismo tipo de cosas te gustaría hacer para hacer cualquier servidor de base de datos de la aplicación eficiente, por ejemplo, la recuperación de la menor utilizable conjuntos de datos).

En este caso, ya que cada usuario debe tener una copia individual de la front-end MDB, la multi-usuario de los límites de Acceso/Jet son simplemente no es relevante en absoluto.

Sé que esto no responde a su pregunta directamente, pero podría ser vale la pena mirar el SQL Server 2005 de la herramienta de migración para el Acceso.Nunca he usado la herramienta, pero podría ser vale la pena usar con SQL Server 2005 Express Edition para ver si hay los mismos problemas que tenía con MySQL

No te olvides de poner algún tipo de marca de fecha/hora en cada registro.a veces ms access van a pensar "otro usuario ha cambiado o eliminado el registro" y no le permitirá hacer un cambio!He encontrado esto de la manera difícil.

En general, esto depende de :)

No he tenido un montón de problemas cuando el lado de la aplicación ha sido la actualización de los datos a través de los formularios.Usted puede obtener advertencias/errores cuando la misma fila ha sido actualizado por más de un usuario;pero el Acceso parece ser una constante actualización de su disco en vivo de los conjuntos de todo el tiempo.

Los problemas pueden ocurrir si Alice ya está trabajando con récord de 365, y el Bob actualizaciones y, a continuación, Alice intenta actualizarlo con sus cambios.Como recuerdo, Alice va a obtener un críptico mensaje de error.Sería más fácil para los usuarios si usted trampa de estos errores y por lo menos darles un amable mensaje de error.

He tenido más problemas cuando estaba editando registros en el código de VB a través de Conjuntos de registros, especialmente cuando se combina con la edición de los mismos datos en los formularios.Que no necesariamente es un multi-usuario problema;sin embargo, tiene casi la misma situación debido a que tiene un usuario con múltiples conexiones a los mismos datos.

Si sólo son dos los usuarios, luego de Acceso deben hacer muy bien si pones el .mdb en una unidad compartida.

Has probado primero en lugar de simplemente asumir que va a ser un problema.

Creo que el máximo recomendado de usuarios concurrentes para el Acceso es de 5 pero en ocasiones me ha empujado más allá de esto y nunca despegarán.

Por otro lado, me hizo una vez para utilizar el Acceso como el front-end a MySQL en un entorno de usuario único (me).Fue una singular experiencia desagradable, me puedo imaginar que pueda ser más agradable con dos usuarios.

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