Tabelle von MSSQL nach MDB kopieren

bernd00

Mitglied
Hallo zusammen,

möchte gerne den Inhalt einer MSSQL Datenbanktabelle in eine MDB Tabelle kopieren.
Ich habe 2 Verbindungen, eine zum MSSQL Server und eine zur Access Datenbank. Beide funktionieren.
Die MDB behinhaltet die Tabellenstrukur der Tabelle, ist aber leer. Soll nun mit den Daten vom Server gefüllt werden.
Mir fällt nichts ein, wie ich das lösen kann ohne ein Recordset Zeile für Zeile in die MDB zu schreiben.

Dieser Vorgang muss regelmäßig durchgefüht werden. Soll dabei helfen, dass das Arbeiten mit den Daten schneller wird (client-PCs sind verbunden über ne VPN Leitung, die teilweise sehr langsam ist).
Habe eine MDB gewählt, da ich diese auch bei Problemen manuell öffnen und bearbeiten kann. So lege ich die Tabellenstruktur in der MDB an, lasse diese leeren, und dann sollen die Tabellen vom Server gefüllt werden.

Hat da jemand einen Tipp für mich?

vielen Dank :)

Gruß
bernd00
 
Tipp (auch von Microsoft): Keine MDB verwenden! Du hast damit letztendlich nur Probleme, weil Access eine Datenbank zum Beispiel nicht direkt bei einem close schließt und nicht zugesichert wird dass die Auswirkungen von vorherigen Schreiboperationen beim nächsten Lesezugriff schon vorhanden sind...

Nimm lieber MySQL oder HSQLDB. Ich meine mit Squirrel kann man auch kopieren.
 
Danke für den Tipp. Bin auch kein Fan von einer mdb.
Es ist so, dass es bei uns einen zentralen MSSQL Server gibt, der Chef ist. Die MDB soll lediglich eine Notlösung sein. Die User im LAN betrifft das nicht. Alle 65 Benutzer, die über ein VPN auf den Server zugreifen, sollen die MDB bekommen. Kommt schonmal vor, dass bei einem Standort von nem Netten Baggerfahrer Telefonleitungen zerstört werden, und die kurzfristig keine VPN Verbindung mehr aufbauen können. Es soll auch nicht die komplette DB kopiert werden, nur die wichtigsten Tabellen, um das Programm vernünftig zu starten.
Es kann aber vorkommen, dass weitere Tabellen kopiert werden müssen, damit der Benutzer etwas ausführen kann. Wenn keine Verbindung besteht, der Benutzer aber unbedingt daran arbeiten muss, kann er es mit der lokalen MDB machen. Wenn der fertig ist, kann ich die MDB ganz einfach und schnell auslesen, nicht nur ich, sondern auch mein Chef, der nur Access kann und von auslesen andere DB-Typen keinen Plan hat.

MySQL geht leider nicht, da auf dem ClientPC nicht noch ein Server installiert wird. Und HSQLDB hab ich noch nie etwas mit gemacht, aber schon nach gesucht und konnte das nicht einsetzen, bzw. zum laufen bringen, denn während der Laufzeit prüfe ich ab ob der Server erreichbar ist und wenn nicht, dann wird auf die MDB zurückgegriffen.
Oder wie kann ich am einfachsten eine Lokale DB Datei anlegen? SQLite habe ich schon ausprobiert.
 
Mit HSQLDB kannst du Dateibasierte Datenbanken erstellen die lokal beim Nutzer liegen. Dafür mußt du einfach hier ein paar Threads weiter unten schauen, oder ganz oben, dort ist ein Tutorial verlinkt.

Wenn es eine mdb sein muss, solltest du irgendwo einen MSSQL ODBC Treiber finden können. Wenn du den einbindest müßtest du eine MSSQL Datenbank direkt als Datenquelle in Access auswählen können um von dort Dateien zu importieren (manuell).

Ansonsten bleibt dir meines Wissens nur der Weg die Tabelle so mittels SQL Statements zu kopieren oder eine Library einzusetzen die das kann.
 
HSQLDB ist wahrscheinlich eine gute Lösung, wenn es keine mdb sein soll. Nur da steh ich auch vor dem Problem, die Tabellen lokal verfügbar zu machen.
Wie man auf einem MSSQL Server eine Tabelle in eine andere Datenbank kopiert weiß ich, oder auch in Access. Hab auch schon daran gedacht, die MDB starten zu lassen und durch ein modul die Daten importieren zu lassen. Das dauert aber viel länger als meine momentane Lösung.
Das Problem wäre ja bei mdb, genau wie einer HSQLDB, dass es 2 Datenbanken gibt, mit 2 Connections und ich keinen SQL Befehl ausführen kann, der alle Zeile aus MSSQL.Tabelle1 in MDB.Tabelle1 einfügt.

Habe das mal geschätzt, und auf einem ClientPC getestet. Aktuelle wären es nur 6 Tabellen, mit ungefähr 300 Zeilen, ab mitte des Jahres ungefähr 5.000 Zeilen, also nicht wirklich viel.
Habe das nun erstmal gelöst, indem beim Starten des Programms ein Thread startet, der im Hintergrund die Aufgabe übernimmt, die definierten Tabellen zu kopieren, bzw. die Datensätze.
Da jeder Client auch einen Benutzernamen zur Anmeldung hat, kann ich die Datensätze zusätzlich eingrenzen. Das geht eigentlich ganz zügig.

Immerhin übergebe ich die Tabellen nicht ganz manuell, gebe lediglich die Tabellennamen vor, der Rest läuft automatisch.

Das wäre doch mit HSQLDB genauso, Tabellen leeren, dann jeden Datensatz auslesen und in die lokale DB einfügen?
 
Zurück