Jump to content

Access DB Import


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Frank,

 

ich möchte regelmäßig eine Access 2010 DB in meinen SQL Server 2014 importieren. Hintergrund ist der, dass mehrere Access DB in Umlauf sind und ich die Daten zentral abspeichern und auswerten möchte.

Das klappt und funktioniert auch mit denen, die nicht passwortgeschützt sind.

Nur die besagte DB bereitet Probleme, sicher liegt der Fehler in meinem Code!

 

Abfrage und Import:

USE "DatenBank"
    IF OBJECT_ID('[Tabelle_neu]') IS NOT NULL
        DROP Table Tabelle_neu;
    IF OBJECT_ID('[Tabelle_neu]') IS NULL
        SELECT * INTO Tabelle_neu
        FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\DB.mdb';'BN';'PW', Tabelle_neu) AS k;

 

Dann bekomme ich folgende Fehlermeldung:

Der OLE DB-Anbieter 'Microsoft.Jet.OLEDB.4.0' für den Verbindungsserver '(null)' hat die Meldung 'Die Anwendung kann nicht gestartet werden. Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet.' zurückgeben.

Link zu diesem Kommentar

Hallo Sunny661,

 

danke für den Link, damit hat der Import mit dem Assistenten funktioniert.

Jetzt benötige ich das Ganze nur noch als Syntax!

 

Leider hat google noch keinen brauchbaren Ergebnisse geliefert.

In den ConnectionString sollte das Datenbankpasswort abgefragt werden, nicht UserName und PW!

Nur wie lautet der String...

 

 SELECT * INTO Tabelle_neu
        FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\DB.mdb';'BN';'PW', Tabelle_neu) AS k;

 

Link zu diesem Kommentar

Welche Varianten hast Du denn schon probiert? Evtl. findest Du hier einen passen Connection String: https://www.connectionstrings.com/ace-oledb-12-0/with-database-password/

 

EDIT: Ganz oben in dem angegebenen String einfach nur den Teil mit Username weglassen. https://docs.microsoft.com/de-de/sql/ado/guide/appendixes/microsoft-ole-db-provider-for-microsoft-jet?view=sql-server-2017

 

Was steht bei Advanced drin? connect-to-access.jpg?view=sql-server-20

 

Kann man am Ende keinen SQL String generieren lassen?

 

EDIT: Hier sind noch weitere Connectionstrings: https://www.databasetour.net/documentation/connection-strings-examples.htm

bearbeitet von Sunny61
Link zu diesem Kommentar

Hallo Sunny,

 

anbei der Screenshot. Leider habe ich nicht die Möglichkeit einen SQL String anzeigen zu lassen.

image.png.5f2dc430141253add96fd17299ac720a.png

 

Den Link kenne ich, aber ich kann die Syntax nicht implementieren !

https://www.connectionstrings.com/ace-oledb-12-0/with-database-password/

 

 

 

Auf dem Weg funktioniert es leider nicht, weiß allerdings auch nicht, ob es richtig ist, da ich diesbezüglich nichts im Netz gefunden habe!

 

SELECT * INTO Tabelle_neu
        FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\db.mdb';'Admin';'Jet OLEDB:Database Password = PW','Tabelle_neu')AS K

 

 

Jemand noch eine Idee?!

Link zu diesem Kommentar
vor 5 Stunden schrieb Sunny61:

Du hast keine der angebotenen Möglichkeiten ausgetestet. Und funktioniert nicht ist keine Fehlermeldung.

Welche angebotenen Möglichkeiten?!

Ich benötige die korrekte Syntax, wenn du sie  weiß oder kennst, dann wäre es super wenn du mir helfen könntest.

Suche im Netz schon seit Stunden / Tagen!

bearbeitet von Bladetown82
Link zu diesem Kommentar

Hallo,

 

ruhig Blut, kein Grund zur Aufregung... ;-)

 

Grundsätzlich helfen wir gerne, allerdings geht es dabei um Hilfe zur Selbsthilfe. Das bedeutet: Auf's Fahrrad helfen wir Dir geistig gerne, fahren musst Du dann aber alleine.

 

Und nun zurück zum Thema:

Welche Möglichkeiten hast Du ausprobiert? Es wurden Dir Links gezeigt mit Lösungshinweisen, wie weit bist Du dabei gekommen?

Was genau funktioniert dabei nicht? Welche Fehlermeldungen erhältst Du oder was fehlt Dir, um weiterzumachen?

 

Link zu diesem Kommentar

Hallo Lian,

 

ich bin doch die Ruhe selbst ;-), zum Thema.

 

Das wäre die richtige Connection, meine Erachtens.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Jet OLEDB:Database Password=MyDbPassword;

 

Leider weiß ich nicht, wie ich das richtig im "OPENROWSET" implementiere.

Ich denke fast, dass der "OPENROWSET" Befehl hier der falsche Weg ist.

 

IF OBJECT_ID('[Tabelle_neu]') IS NOT NULL
        DROP Table Tabelle_neu;
    IF OBJECT_ID('[Tabelle_neu]') IS NULL
        SELECT * INTO Tabelle_neu
        FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\DB.mdb';'Admin';'Jet OLEDB:Database Password = PW','Reparaturen_neu')AS K

 

FEHLERMELDUNG: Der OLE DB-Anbieter 'Microsoft.Jet.OLEDB.4.0' für den Verbindungsserver '(null)' hat die Meldung 'Kein zulässiger Kontoname oder kein zulässiges Kennwort.' zurückgeben.

 

---------------------------------------------------

 

 

IF OBJECT_ID('[Tabelle_neu]') IS NOT NULL
        DROP Table Tabelle_neu;
    IF OBJECT_ID('[Tabelle_neu]') IS NULL
        SELECT * INTO Tabelle_neu
        FROM OPENDATASOURCE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB.mdb; Jet OLEDB:Database Password=PW;','').dbo.Tabellen_neu

 

FEHLERMELDUNG: Ungültiger Objektname 'dbo.Tabellen_neu'.

 

 

Link zu diesem Kommentar

Ich habe da noch eine blöde Idee, die ich noch nicht ausprobiert habe und zwar;

wenn der Import eine passwortgeschützten MdB mit ssis Packet funktioniert, dann sollte man doch evtl. den generierten connectionstring irgendwie abgreifen können?

 Aber eine andere Lösung wäre du erstellst die zwei ssis Pakete um die mdb‘s zu importieren. 

Moder nur ein ssis Paket dem du ein Parameter definiert für Passwort und im Paket entscheidest welcher Importzweig verwendet werden soll. 

 

Das würde doch einfacher sein oder?

 

VG

DerFrank

 

bearbeitet von DerFrank
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...