Jump to content
Sign in to follow this  
Bladetown82

Access DB Import

Recommended Posts

Hallo, 

 

ich will per script eine Access DB welche mit Passwort geschützt ist, in meinen MS SQL Server importieren.

Leider bekomme ich trotz Passwort keinen Zugriff auf die DB.

 

Der Import klappt nur, wenn ich die DB ohne PW separat speichere!

 

Hat jemand eine Idee?!

Share this post


Link to post
Share on other sites

Verstehe ich deine Frage richtig,

das du regelmäßig eine Passwordgeschützte AccessDatenbank erhältst und daher per Script einen Import zum sql Server durchführen möchtest?

Edited by DerFrank
Erweiterung meiner frage

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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;

 

Share this post


Link to post
Share on other sites

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

Edited by Sunny61

Share this post


Link to post
Share on other sites

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?!

Share this post


Link to post
Share on other sites
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!

Edited by Bladetown82

Share this post


Link to post
Share on other sites

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?

 

Share this post


Link to post
Share on other sites

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'.

 

 

  • Like 1

Share this post


Link to post
Share on other sites

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

 

Edited by DerFrank

Share this post


Link to post
Share on other sites

Habe gerade die Connection mit C# hergestellt und die Connectionstring abgegriffen!

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test.mdb;Jet OLEDB:Database Password=PW

 

Sieht leider identisch aus!

 

 

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...