2009-11-23 3 views
3

Je suis en train de migrer une base de données Access existante vers une base de données SQL avec une interface Web. J'ai copié avec succès la base de données vers SQL en utilisant l'outil de migration SQL Server et je travaille sur le développement de l'application. Pour des raisons que je ne vais pas aborder ici, nous ne pouvons pas simplement lier le frontal d'accès à la base de données SQL et utiliser la base de données SQL comme source de données unique, la base de données Access est toujours utilisée et les données mises à jour. Ce que j'essaie de trouver est un moyen simple de mettre à jour les données dans la base de données SQL avec les nouvelles données dans la base de données d'Access. La structure de la table, etc est la même chose tout ce que je dois faire est de copier les données, y at-il un script ou une méthode facile à faire? Je ne veux pas vraiment avoir à exécuter l'assistant de migration chaque fois que je dois faire une mise à jour.Copie de données à partir d'Access to SQL

Répondre

6

Je suggère également d'utiliser des tables liées au serveur SQL, mais par les sons qui sont hors de votre contrôle. J'espère que ce n'est que temporaire afin que les utilisateurs puissent continuer à travailler sur la base de données Access pendant le développement, et non parce que certains gestionnaires pensent que ce type de système intégré manuellement est une bonne idée "allant de l'avant".

Il existe un meilleur outil de migration vers le serveur SQL, appelé Sql Server Migration Assistant (SSMA), qui est bien meilleur que l '«assistant de migration» intégré à Access. Vous pouvez être en mesure d'écrire un script pour rendre la tâche répétable.

Une autre approche consisterait à configurer une édition Express du serveur SQL à chaque fois que le DB d'accès existe et y créer un lien, en l'utilisant comme un DB intermédiaire. Vous pouvez configurer la version SSEE en tant qu'abonné replication et synchroniser les modifications entre celle-ci et vos bases de données de développement/production quand vous le souhaitez. Pour les utilisateurs, il sera transparent et vous pouvez dire à la direction que la base de données Access est totalement séparée des bases de données de développement/production. Ou copiez simplement la base de données à chaque fois si vous ne pouvez pas vous préoccuper d'en savoir plus sur la réplication, mais je pense que la réplication pourrait rendre la chose beaucoup plus simple.

0

Il est possible de lier des tables SQL Server à Access où vos formulaires Access peuvent entrer les données normalement, mais elles seront en fait dans SQL Server.

+0

Oui, ce fut mon plan initial , malheureusement ce n'est pas possible (politiquement pas techniquement). La base de données Access doit rester séparée de la base de données SQL –

+0

Il est possible de programmer le transfert de données dans SQL Server de façon régulière, ce qui n'est pas idéal, mais vraiment. –

1

Vous pouvez exécuter des requêtes d'accès via VBA qui ajoute de nouveaux enregistrements et met à jour les enregistrements précédents dans SQL Server. La chaîne de connexion est identique à celui utilisé pour connecter une table SQL, comme je l'indique dans cet exemple brut, de sorte que vous pouvez tester vous connecter au tableau correspondant pour obtenir une chaîne appropriée:

Dim db As Database 
Set db = CurrentDb 

strConnect = db.TableDefs("dbo_test").Connect 
strSQL = "UPDATE [" & strConnect & "].[test] As s " _ 
& "INNER JOIN TestAccess As a " _ 
& "ON s.ID=a.ID " _ 
& "SET s.Descr=a.Descr WHERE s.Descr<>a.Descr" 
db.Execute strSQL, dbFailOnError 
Debug.Print db.RecordsAffected 

strSQL = "INSERT INTO [" & strConnect & "].[test] (ID, Descr) " _ 
& "SELECT a.ID, a.Descr FROM TestAccess As a " _ 
& "LEFT JOIN [" & strConnect & "].[test] s " _ 
& "ON s.ID=a.ID " _ 
& "WHERE s.ID Is Null" 
db.Execute strSQL, dbFailOnError 
Debug.Print db.RecordsAffected 
Questions connexes