2011-04-18 28 views
14

Un colega con el que trabajo recientemente me dijo que SQL Express y MS Access eran esencialmente lo mismo; eso no parece ser una declaración precisa. Sé que puede convertir Access a SQL DB y tal vez bajo las cubiertas son similares, pero supongo que el motor SQL DB y lo que se utiliza para ejecutar el acceso no son lo mismo. No solo eso, sino la sintaxis de la declaración SQL, etc. Sé que no son lo mismo.SQL Server Express vs MS Access

Estoy tratando principalmente de entender para que esté más informado acerca de las versiones.

Respuesta

38

Um, no, no es lo mismo.

En primer lugar, necesito aclarar algunos términos. MS Access es una herramienta de desarrollo rápido de aplicaciones (RAD) que le permite crear rápidamente formularios e informes vinculados a datos relacionales. Viene con un motor de base de datos basado en archivos (Jet/ACE).

El acceso a la herramienta RAD se puede utilizar con muchas bases de datos back-end diferentes (Jet, SQL Server, cualquier base de datos que admita ODBC, etc.). Tengo que suponer que su colega estaba específicamente comentando sobre Jet/ACE, es decir, el motor de base de datos que utiliza MS Access.

creo que la principal diferencia entre el Jet/ACE database engine y MS SQL Server Express es que Jet/ACE es y SQL Server Express basado en archivos utiliza un modelo cliente/servidor. Esto significa que SQL Server Express requiere un servicio en ejecución para proporcionar acceso al almacén de datos. Esto puede complicar la implementación en algunos escenarios.

SQL Server Express es simplemente una versión acelerada de SQL Server: tamaño de base de datos máxima de 4 GB (10 GB en 2008R2), solo usa una sola CPU física, etc. Estas limitaciones se imponen para evitar que grandes organizaciones usen edición Express de libre disponibilidad en lugar de una instalación completa de SQL Server. El resultado de esto es que SQL Server Express ofrece una ruta de actualización realmente perfecta para SQL Server. También es (en términos generales) un sistema de gestión de bases de datos más robusto y con todas las funciones, luego Jet/ACE.

Similitudes

  • sistemas de gestión de base de datos relacional
  • escrito por Microsoft

Diferencias

  • MS Access
    • basadas Archivo
    • tiempo de ejecución distribuibles libre (2007 o posterior)
    • herramientas RAD (forma/diseñador de informes)
    • utiliza Jet SQL
    • tamaño máximo de archivo de 2 GB
  • SQL Server Express
    • Cliente/Servidor modelo
    • gratis
    • no hay herramientas RAD
    • utiliza Transact-SQL
    • tamaño de la base de datos máximo de 4 GB (10 GB para SSE R2), una CPU física máx
+3

También vale la pena señalar que SQL Server le permite crear activadores y procedimientos almacenados, mientras que Jet/ACE no lo hace. MS Access (como herramienta RAD) no está diseñado para editar o ejecutar procedimientos almacenados aunque puede manipularlos en código VBA utilizando ADO (Objetos de datos ActiveX). – HK1

+1

Si bien no he tenido la oportunidad de usarlos para mí, Access 2010 presentó "[Macros de datos] (http://blogs.office.com/b/microsoft-access/archive/2009/08/13/access-2010) -data-macros-similar-to-triggers.aspx), "que son similares a los desencadenadores en SQL Server. – mwolfe02

+0

En realidad, las macros de datos a nivel de tabla no son similares a los desencadenadores, pero se pueden usar para implementar algo que funciona de la misma manera que los desencadenadores. También pueden ser utilizados para otros fines. –

1

Creo que lo que su colega tenía en mente era SQL Server CE, que es una base de datos incrustada súper liviana, que sigue siendo (IMO) muy superior a Access en aspecto de administración de bases de datos. SQL Express no se puede comparar con Access sin ofender al primero.

+0

Bueno, la edición compacta del servidor sql no tiene procedimientos de almacenamiento o desencadenadores de tabla, mientras que el motor de datos de acceso predeterminado ahora sí lo tiene. Por lo tanto, no es tan difícil que la edición compacta del servidor sql, que también es un motor de datos en proceso como el motor de acceso de datos (ACE) y no es un servicio, esté en debate. –

+0

O tal vez SQLite vs Access – skan

0

Aquí están las hojas de datos de ambos productos para que pueda ver algunos hechos concretos sobre la diferencia entre las dos bases de datos.

acceso: http://office.microsoft.com/en-us/access-help/access-specifications-HP005186808.aspx

SQL (Express se enumera en la columna de la derecha): http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx

El comentario siempre que he leído es que el acceso es ideal para el acceso sencillo solo usuario el uso de bases de datos, la minuto que escales más allá de un solo usuario mira a otra parte. Si bien puede ser un poco "exagerado", Access realmente no funciona bien en un entorno multiusuario. Por experiencia, hemos tenido un cliente que ha ignorado e ignorado nuestras solicitudes para migrar una base de datos back-end de Access a SQL, y ha habido numerosas ocasiones en las que hemos tenido que restaurar desde copias de seguridad o desconectar la base de datos de Access debido a daños.

Son dos tecnologías completamente diferentes con dos mercados objetivo diferentes. Los motores de base de datos son realmente diferentes, ya que mencionas que T-SQL es diferente de Access SQL.

Puede "escalar" una base de datos de Access a SQL creando un paquete SSIS u otra herramienta para realizar la importación, pero esto toma el esquema y datos de Access y lo migra a una base de datos SQL verdadera. Hace más que solo adjuntar la base de datos de Access o similar.

Cada vez que necesite una base de datos "real", le recomiendo consultar cualquiera de las versiones de SQL que están disponibles a través de Access.

+3

La idea de que Access/Jet/ACE no puede tratar con más de un usuario es ridícula. Todos mis clientes con backeets Jet/ACE tienen múltiples usuarios que acceden al almacén de datos simultáneamente. Si su aplicación no funciona bien con más de un usuario, ES SU FALLA, no la de Access. –

+3

Y pierda la terminología de la "base de datos real". Te hace ver como un intolerante anti-acceso que no sabe nada. –

0

Sólo recuerde que con MS-Access no lo hace tiene limitaciones de tamaño si juega bien sus cartas. No hay razón, por ejemplo, para no tener muchas tablas de 2 a 4 Gig cada una contenida singularmente en su propia base de datos. Sus aplicaciones ODBC pueden abrir una conexión a múltiples bases de datos de MS-Access y consultar la tabla única en cada una. Entonces puede tener una base de datos que contenga billones de registros, almacenados en múltiples archivos MDB. Una compañía para la que trabajé usaba una única base de datos MS-Access para ejecutar un sistema de seguimiento de problemas hecho en formularios MS-Access. Solo podían usarlo una persona a la vez porque compartían problemas que bloquearían MS-Access. Escribí una interfaz de usuario nativa de Windows Win32 Perl GUI para la base de datos que era mejor en la validación de campo/registro, y mi código ODBC fue capaz de administrar la conexión para el acceso simultáneo de los usuarios. Logré abrir, leer, escribir y cerrar la base de datos para cada usuario a través de mi programa Perl. No dejé la base de datos abierta. No mantuve una conexión persistente para cada usuario, sino que solo mantuve una conexión el tiempo suficiente para recuperar un registro para editar. Luego cerré la conexión hasta que llegó el momento de volver a escribir la grabación en la base de datos. Además, escribí mi propia lógica de programa de bloqueo de registros manteniendo una tabla de inicio de sesión de usuario que contenía la identificación de registro del registro que un usuario estaba editando actualmente, luego borré esa entrada cuando ya no editaba ese registro. Cuando otro usuario fue a editar el mismo registro, el programa comprobó si ese registro estaba actualmente abierto para ser editado por otro usuario. El sistema funcionó a la perfección. MS-Access nunca se bloquea a través de ODBC y acceso multiusuario.Incluso incorporé la contraseña a la base de datos en mi programa compilado de Perl para que nadie pudiera acceder a los datos en la base de datos de Access a través de mi programa Perl.

Cuestiones relacionadas