web-dev-qa-db-fra.com

SQL Server Express vs MS Access

Un collègue avec lequel je travaille a récemment déclaré que SQL Express et MS Access étaient essentiellement la même chose. cela ne semble pas être une déclaration exacte. Je sais que vous pouvez convertir Access en une base de données SQL. Ils sont peut-être similaires, mais je suppose que le moteur de base de données SQL et ce qui est utilisé pour exécuter l'accès ne sont pas identiques. Non seulement cela, mais la syntaxe d'instruction SQL, etc. Je sais ne sont pas les mêmes.

J'essaie principalement de comprendre afin que je sois plus informé sur les versions.

19
scarpacci

Euh, non, pas pareil.

Tout d'abord, je dois éclaircir une terminologie. MS Access est un outil de développement rapide d'applications qui vous permet de créer rapidement des formulaires et des rapports liés à des données relationnelles. Il est livré avec un moteur de base de données basé sur des fichiers (Jet/ACE).

L'accès à l'outil RAD peut être utilisé avec différentes bases de données principales (Jet, SQL Server, toutes les bases de données prenant en charge ODBC, etc.). Je dois supposer que votre collègue commentait spécifiquement Jet/ACE, c’est-à-dire le moteur de base de données utilisé par MS Access. 

Je pense que la plus grande différence entre le moteur de base de données Jet/ACE et MS SQL Server Express est que Jet/ACE est basé sur un fichier et SQL Server Express utilise un client/serveur modèle. Cela signifie que SQL Server Express nécessite un service en cours d'exécution pour fournir un accès au magasin de données. Cela peut compliquer le déploiement dans certains scénarios.

SQL Server Express n'est en réalité qu'une version limitée de SQL Server: taille de base de données maximale de 4 Go (10 Go en 2008R2), utilisation d'un seul processeur physique, etc. Ces limitations sont imposées pour empêcher les grandes entreprises d'utiliser l'édition Express librement disponible. à la place d'une installation complète de SQL Server. Il en résulte que SQL Server Express offre un chemin de mise à niveau totalement transparent vers SQL Server. Il s’agit également (d’une manière générale) d’un système de gestion de base de données plus robuste et plus complet que celui de Jet/ACE.

Similitudes

  • systèmes de gestion de bases de données relationnelles
  • écrit par Microsoft

Différences

  • MS Access
    • Fichier basé
    • runtime distribuable gratuit (2007 ou ultérieur)
    • Outils RAD (concepteur de formulaire/rapport)
    • utilise Jet SQL
    • taille maximale du fichier 2 Go
  • SQL Server Express
    • Modèle client/serveur
    • libre
    • aucun outil RAD
    • utilise Transact-SQL
    • taille maximale de la base de données: 4 Go (10 Go pour SSE R2), maximum un processeur physique
46
mwolfe02

Je pense que ce que votre collègue avait à l’esprit était SQL Server CE , qui est une base de données intégrée ultra-légère, qui est toujours (IMO) bien supérieure à Access pour la gestion de base de données. SQL Express ne peut même pas être comparé à Access sans offenser l'ancien.

2
Anton Gogolev

Voici les fiches techniques des deux produits afin que vous puissiez voir quelques faits concrets sur la différence entre les deux bases de données.

Accès: http://office.Microsoft.com/en-us/access-help/access-specifications-HP005186808.aspx

SQL (Express est répertorié dans la colonne à l'extrême droite): http://www.Microsoft.com/sqlserver/2008/en/us/editions-compare.aspx

Le commentaire que j'ai toujours lu est qu'Access est idéal pour une utilisation dans une base de données à utilisateur unique, dès que vous regardez au-delà d'un utilisateur unique. Bien que cela puisse sembler un peu exagéré, Access ne fonctionne vraiment pas bien dans un environnement multi-utilisateur. Par expérience, nous avons eu un client qui a ignoré et ignoré nos demandes de migration d’une base de données principale d’Access vers SQL. De nombreuses fois, nous avons dû restaurer à partir de sauvegardes ou mettre la base de données Access hors ligne pour cause de corruption. 

Ce sont deux technologies complètement différentes avec deux marchés cibles différents. Les moteurs de base de données sont en effet différents, puisque vous mentionnez que T-SQL est différent d’Access SQL. 

Vous pouvez "adapter" une base de données Access à SQL en créant un package SSIS ou un autre outil pour effectuer l'importation, mais cela prend le schéma et les données Access et les migre vers une vraie base de données SQL. Il fait plus que simplement attacher la base de données Access ou similaire. 

Chaque fois que vous avez besoin d'une "vraie" base de données, je vous recommande vivement de consulter l'une des versions SQL disponibles sur Access. 

0
Ryan

Rappelez-vous simplement qu'avec MS-Access, vous n’avez pas de limite de taille si vous jouez correctement vos cartes. Il n'y a aucune raison, par exemple, de ne pas avoir plusieurs tables de 2 à 4 gig chacune séparément dans leur propre base de données. Vos applications ODBC peuvent ouvrir une connexion à plusieurs bases de données MS-Access et interroger la table unique dans chacune d'elles. Ainsi, vous pouvez avoir une base de données contenant des milliards d’enregistrements, stockés dans plusieurs fichiers MDB. Une entreprise pour laquelle je suis allée travailler utilisait une seule base de données MS-Access pour exécuter un système de suivi des problèmes créé dans des formulaires MS-Access. Ils ne pouvaient l'utiliser qu'une personne à la fois à cause de problèmes de partage qui verrouilleraient MS-Access. J'ai écrit une interface utilisateur graphique Windows native de Win32 Perl avec la base de données, qui était meilleure pour la validation de champs/enregistrements, et mon code ODBC permettait de gérer la connexion pour un accès utilisateur simultané. J'ai géré l'ouverture et la lecture, l'écriture et la fermeture de la base de données pour chaque utilisateur via mon programme Perl. Je n'ai pas laissé la base de données ouverte. Je ne maintenais pas une connexion persistante pour chaque utilisateur, mais je ne maintenais qu'une connexion assez longtemps pour récupérer un enregistrement à modifier. Ensuite, j'ai fermé la connexion jusqu'à ce qu'il soit temps d'écrire l'enregistrement dans la base de données. De plus, j’ai écrit ma propre logique de programme de verrouillage d’enregistrement en maintenant une table de connexion qui contenait l’identifiant de l’enregistrement en cours de modification par un utilisateur, puis en effaçant cette entrée lorsqu’il n’a plus modifié cet enregistrement. Lorsqu'un autre utilisateur est allé éditer le même enregistrement, le programme a vérifié si cet enregistrement était actuellement ouvert pour être édité par un autre utilisateur. Le système a fonctionné parfaitement. MS-Access n'est jamais bloqué via ODBC et un accès multi-utilisateur. J'ai même intégré le mot de passe à la base de données dans mon programme Perl compilé afin que personne ne puisse accéder aux données de la base de données Access autrement que par le biais de mon programme Perl. 

0
Eric