Laden...

Datenbankeinträge vom SQL Server nach Access übertragen

Erstellt von qazeem vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.197 Views
qazeem Themenstarter:in
103 Beiträge seit 2006
vor 15 Jahren
Datenbankeinträge vom SQL Server nach Access übertragen

verwendetes Datenbanksystem: SQL Server, Access

Wie geht man am besten vor, wenn man Tabelleneinträge aus einer SQL Datenbank in eine Access Datenbank übertragen will?

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo qazeem,

normalerweise gibt es einige Tools, die einen Datenbank-Datentransfer erledigen können.

Falls Du aber doch keinen finden solltest, dann musst Du Dir etwas basteln. Du nimmst eine komplett leere Access-DB und Deine SQL-DB mit den Daten. Dann fängst Du an, die DB-Struktur aus dem SQL-Server mit Hilfe der Systemtabellen auszulesen, sprich alle Tabellen und Spalten. Alle gewonnenen Informationen musst Du nun für Access verwerten und in entsprechende Tabellen mit Spalten umsetzen (gerade die Spaltentypen sind dort kompliziert umzusetzen). Beachte auch die referentielle Integrität, sprich die Foreign-Keys, die ebenfalls mit auszulesen und umzusetzen sind.

Das ist aber wirklich komplikziert, ehrlich.

Oder aber Du nimmst einen kostenlosen OR-Mapper, dem man während der Laufzeit eine andere Datenbank unterschieben kann. Dann wäre es möglich sich die Klassen für das OR-Mapping generieren zu lassen und einfach aus dem SQL Server die Objekte einzulesen, DB umstellen, und danach die Objekte wieder persistieren zu lassen.

Unter Umständen, wenn eine sehr einfach strukturierte DB vorliegt (aber wirklich nur dann), wenn z.B. keine Foreign-Keys vorhanden oder irgendwelche BLOBs vorhanden etc. könnte ein Full-SQL-Dump helfen, den man dann versucht in Access einzuspielen. In diesem Fall muss man allerdings mühevoll das generierte SQL Access-kompatibel machen, was wohl die Schwierigste Aufgabe sein wird (andere DB sind da wohl nicht so eigensinnig 😉

Aber mit den erstgenannten Transfertools hast Du am wenigsten Arbeit.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo qazeem,

Du hast doch in Access auch gute Import / Export Tools, die kannst Du dafür benutzen.

Ich habe zwar noch nie mit Access gearbeitet, aber mal einem Kollegen über die Schulter geschaut der mit Access Daten in eine andere Datenbank übertragen hat.

Ob und wie man damit Strukturen übertragen kann weiss ich allerdings nicht.

Ich würde es auch so machen dass ich ein SQL-Dump erzeuge und den im Editor bearbeite und an Access anpasse. Es gibt ein Tool dass vom SQL-Server ein Dump mit Daten erzeugt.

Wieso willst Du überhaupt nach ACCESS übertragen ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

H
208 Beiträge seit 2008
vor 15 Jahren

Je nachdem was Du machen willst geht es auch noch einfacher.

Wenn es nur darum geht Daten einmalig in bestehende Access-Tabellen zu übernehmen, dann ist es am wenigsten Aufwand, wenn Du einfach die SQL-Server-Tabellen in Access verknüpfst.

Dann sind die Tabellen in Access eingebunden und Du kannst genau wie auf lokale Access-Tabellen darauf zugreifen.
Und da ist es dann eben auch möglich, Joins von Access-Tabellen auf Servertabellen zu machen und z.B. UPDATE- oder INSERT-Abfragen von Servertabellen in Access-Tabellen auszuführen.
Das Verknüpfen von Servertabellen mit normalen Tabellen ist aber ein Performancekiller übelster Sorte und deshalb wirklich nur für einmalige Aktionen geeignet, nicht für den laufenden Betrieb.

Wenn es die Tabellen in Access noch nicht gibt und Du sie einmalig anlegen willst, dann kannst Du sie in Access importieren. Spaltennamen, Datentypen etc. werden übernommen, nur Schlüssel & Beziehungen nicht.

Sowohl Importieren als auch Verknüpfen funktioniert bis einschließlich Access 2003 (Access 2007 kenne ich nicht) per Rechtsklick im Datenbankfenster und dann "Importieren" bzw. "Tabellen verknüpfen".
Als Datentyp wählst Du "ODBC Databases" und dann kannst Du unter "Computerdatenquelle" eine vorhandene ODBC-Verbindung wählen (die Du vorher unter Systemsteuerung --> Verwaltung --> Datenquellen(ODBC) anlegen mußt).

qazeem Themenstarter:in
103 Beiträge seit 2006
vor 15 Jahren

Vielen Dank für eure Beiträge,

also ehrlich gesagt, ich kenne Access nicht. Ich habe ein Online Shop programmiert welcher an einem SQL Server hängt. Dort gibts unter anderem die Tabellen "Kunde" und "Aufträge". Jetzt sollen die neuen Aufträge und die neu registrierten Kunden, jedes mal wen man lokal am Rechner sitzt in ein lokales Access System miteingebunden werden. Von dem lokalen Access System ist das Erstellen einer Rechnung schon möglich.

Ich dachte da müsste ich so ein Windows Tool erstellen oder es gibt es schon, dass die neuen Einträge aus der SQL Datenbank vom Server einliest und dann lokal in die Access Tabelle schreibt.

Oder ich benutze sowas wie "Importieren" von Access, aber ich glaube da ich Access nciht kenne, müsste ich mich erstmal damit beschäftigen, oder?

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo qazeem,

es ist immer wichtig genau zu sagen worum es geht, damit wir auch die richtigen Tipps geben können.

In deinem Fall würde ich ein Programm schreiben dass deine Webshop-Aufträge durchgeht und diese dann in Access speichert. Pro Web-Shop-Auftrag musst Du dir natürlich merken, ob er schon übertragen wurde oder nicht.

Von .NET aus kannst Du sicher auf Access zugreifen. Notfalls über OleDB/Odbc.

Mit Access hatte ich allerdings noch nie was zu tun (und will es auch in Zukunft nicht).

Ich dachte da müsste ich so ein Windows Tool erstellen oder es gibt es schon, dass die neuen Einträge aus der SQL Datenbank vom Server einliest und dann lokal in die Access Tabelle schreibt.

Ja genau. Dann mach doch.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3