Bladetown82 1 Geschrieben 13. März 2019 Melden Teilen Geschrieben 13. März 2019 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?! Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 14. März 2019 Melden Teilen Geschrieben 14. März 2019 (bearbeitet) 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? bearbeitet 14. März 2019 von DerFrank Erweiterung meiner frage Zitieren Link zu diesem Kommentar
Bladetown82 1 Geschrieben 14. März 2019 Autor Melden Teilen Geschrieben 14. März 2019 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. Zitieren Link zu diesem Kommentar
Sunny61 810 Geschrieben 14. März 2019 Melden Teilen Geschrieben 14. März 2019 Schau ob das weiter hilft: https://docs.microsoft.com/de-de/sql/integration-services/import-export-data/connect-to-an-access-data-source-sql-server-import-and-export-wizard?view=sql-server-2017 Zitieren Link zu diesem Kommentar
Bladetown82 1 Geschrieben 14. März 2019 Autor Melden Teilen Geschrieben 14. März 2019 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; Zitieren Link zu diesem Kommentar
Sunny61 810 Geschrieben 14. März 2019 Melden Teilen Geschrieben 14. März 2019 (bearbeitet) 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? 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 14. März 2019 von Sunny61 Zitieren Link zu diesem Kommentar
Bladetown82 1 Geschrieben 14. März 2019 Autor Melden Teilen Geschrieben 14. März 2019 Hallo Sunny, anbei der Screenshot. Leider habe ich nicht die Möglichkeit einen SQL String anzeigen zu lassen. 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?! Zitieren Link zu diesem Kommentar
Sunny61 810 Geschrieben 14. März 2019 Melden Teilen Geschrieben 14. März 2019 Du hast keine der angebotenen Möglichkeiten ausgetestet. Und funktioniert nicht ist keine Fehlermeldung. Zitieren Link zu diesem Kommentar
Bladetown82 1 Geschrieben 14. März 2019 Autor Melden Teilen Geschrieben 14. März 2019 (bearbeitet) 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 14. März 2019 von Bladetown82 Zitieren Link zu diesem Kommentar
Lian 2.463 Geschrieben 15. März 2019 Melden Teilen Geschrieben 15. März 2019 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? Zitieren Link zu diesem Kommentar
Bladetown82 1 Geschrieben 15. März 2019 Autor Melden Teilen Geschrieben 15. März 2019 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'. 1 Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 15. März 2019 Melden Teilen Geschrieben 15. März 2019 (bearbeitet) 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 15. März 2019 von DerFrank Zitieren Link zu diesem Kommentar
Bladetown82 1 Geschrieben 15. März 2019 Autor Melden Teilen Geschrieben 15. März 2019 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! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.