MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 25.12.2016, 12:40   #1
thomasreick
MOF User
MOF User
Standard T-SQL : MSSQL 2012 - SSIS zu Fuß für Massen- bzw. periodisch wiederehrenden Import, Frage zum Vorgehen

Guten Tag zusammen und allen erst einmal schöne Weihnachten!
Konstellation MS-SQL-Server 2012, MSO 2013 32 bit
  • Massenimport deswegen, weil ca. 60 Dateien mit je 500' bis 600' Datenzeilen eingelesen werden müssen.
  • Im ersten Shritt ist das nur einmalig, wäre für die Zukunft aber ein performanterer Weg als der zur Zeit genutzte.
  • Ein echter Einsatz der SSIS auf dem Zielsystem ist leider nicht möglich.

Ich versuche also dafür ein bestehendes DTSX-Paket aus Access / VBA heraus auszuführen, bei dem alles bis auf die einzulesende Datenquelldatei (XLSX) fix ist.
Das DTSX-Paket ist als letzter Schritt eines manuellen Datenimporttasks aus dem SSMS heraus entstande und wurde im Dateisystem abgespeichert.

Da es sich bei dem DTSX um XML handelt, habe ich die Idee, dieses so weit abzuwandeln, daß der "Rahmen" konstant bleibt, während die Quelle veränderbar ist. Dateiname und Pfad würden z.B. bei Aufruf mittles Filedialog geholt.

Dafür wurde das komplette DTSX-XML-File in einem "Langer Text"-Feld in einer Access-Tabelle abgelegt, mit Platzhaltern versehen, die per Replace-Anweisung durch entsprechende Variableninhalte (z.B. "PfadUndDateiname.xlsx", oder Umlauteersetzung) verändert und per Scripting als "neues" DTSX-Paket ausgefahren wird.

Dieses soll dann schlußendlich mit einer EXEC-Anweisung aus Access heraus angestoßen werden.

Bis auf die erfolgreiche Durchführung des Paketaufrufes funktioniert das alles schon sehr gut.

Folgende Fragen:
Ist der Ansatz schon einmal so verwendet worden?
Leider bekomme ich den Fehler, daß der "Provider=Microsoft.ACE.OLEDB.12.0" nicht registriert sei. Hat jemand eine Idee, warum ...
  1. der Import nach manueller Veränderung per Notepad des DTSX, speichern und Ausführen des Paketes per Doppelklick bzw.
  2. per VBA erstelltes DTSX und Doppelklick problemlos funktioniert
  3. nicht aber bei Aufruf der Stored-Procedure in der der EXEC zusammengestellt wird?

Ich bitte um Hinweise.

Fehlerreport aus SSMS:

Code:

output
Microsoft (R) SQL Server-Paketausführungsprogramm
Version 12.0.5000.0 for 64-bit
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
NULL
Gestartet: 12:30:26
Status: 2016-12-25 12:30:26.35
   Quelle: 1-Datenflusstask 
   Überprüfung wird ausgeführt: 0% abgeschlossen.
Statusende
Status: 2016-12-25 12:30:26.37
   Quelle: 1-Datenflusstask 
   Überprüfung wird ausgeführt: 33% abgeschlossen.
Statusende
Fehler: 2016-12-25 12:30:26.37
   Code: 0xC0209303
   Quelle: sap Verbindungs-Manager 'SourceConnectionExcel'
   Beschreibung: Der angeforderte OLE DB-Anbieter 'Microsoft.ACE.OLEDB.12.0' ist nicht registriert. Wenn der 64-Bit-Treiber nicht installiert ist, führen Sie das Paket im 32-Bit-Modus aus: Fehlercode: 0x00000000.
Ein OLE DB-Datensatz ist verfügbar. Quelle: 'Microsoft OLE DB Service Components' HRESULT: 0x80040154 Beschreibung: 'Klasse nicht registriert'.
Fehlerende
Fehler: 2016-12-25 12:30:26.37
   Code: 0xC001002B
   Quelle: sap Verbindungs-Manager 'SourceConnectionExcel'
   Beschreibung: Der Microsoft.ACE.OLEDB.12.0-Anbieter ist auf dem lokalen Computer nicht registriert. Weitere Informationen finden Sie unter 'http://go.microsoft.com/fwlink/?LinkId=219816'.
Fehlerende
Fehler: 2016-12-25 12:30:26.37
   Code: 0xC020801C
   Quelle: 1-Datenflusstask Quelle - Tabelle1$ [12]
   Beschreibung: SSIS-Fehlercode 'DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER'. Fehler beim Aufrufen der AcquireConnection-Methode über den Verbindungs-Manager 'SourceConnectionExcel' (Fehlercode: 0xC0209303). Möglicherweise wurden bereits Fehlerme
ldungen veröffentlicht, die weitere Informationen zum Fehler beim Aufrufen der AcquireConnection-Methode beinhalten.
Fehlerende
Fehler: 2016-12-25 12:30:26.37
   Code: 0xC0047017
   Quelle: 1-Datenflusstask SSIS.Pipeline
   Beschreibung: Fehler beim Überprüfen von 'Quelle - Tabelle1$'. Fehlercode: 0xC020801C.
Fehlerende
Status: 2016-12-25 12:30:26.37
   Quelle: 1-Datenflusstask 
   Überprüfung wird ausgeführt: 66% abgeschlossen.
Statusende
Fehler: 2016-12-25 12:30:26.37
   Code: 0xC004700C
   Quelle: 1-Datenflusstask SSIS.Pipeline
   Beschreibung: Fehler beim Überprüfen von mindestens einer Komponente.
Fehlerende
Fehler: 2016-12-25 12:30:26.37
   Code: 0xC0024107
   Quelle: 1-Datenflusstask 
   Beschreibung: Fehler bei der Tasküberprüfung.
Fehlerende
DTExec: Die Paketausführung wurde beendet. DTSER_FAILURE (1).
Gestartet: 12:30:26
Beendet: 12:30:26
Verstrichen:  0.265 Sekunden
NULL

__________________

Vielen Dank

Thomas Reick
thomasreick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.12.2016, 09:29   #2
sonic8
MOF Profi
MOF Profi
Standard

Zitat: von thomasreick Beitrag anzeigen

Ist der Ansatz schon einmal so verwendet worden?

Von mir nicht. Ist aber eine interessante Idee einfach das XML anzupassen. Das könnte funktionieren.

Zitat: von thomasreick Beitrag anzeigen

Leider bekomme ich den Fehler, daß der "Provider=Microsoft.ACE.OLEDB.12.0" nicht registriert sei. Hat jemand eine Idee, warum ...

Der Ausführungskontext ist ein anderer. Wenn du manuell das DTSX-Paket ausführst läuft es in deinem Benutzerkontext, wenn du es per SP auf dem Server ausführst läuft es im Kontext des SQL-Server-Prozesses. - Anderer User, evtl. anderer Rechner, evtl. andere Bit-ness (32/64-Bit).
sonic8 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.12.2016, 10:02   #3
thomasreick
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Sonic8, hallo Philipp,

danke für deine Antwort.

Das könnte nicht nur funktionieren, komplett "zu Fuß" funktioniert das auch.

Habe ich schon mit 50+ Dateien à 50'-70' Datensätzen manuell durchgeführt.
Notepadd++ mit DTSX-Code paralleell zum Paketausführungprogramm und dann Fleißarbeit....

Mit dem Ausführungskontext muss ich mich befassen.

Gibt es noch weitere Meinungen?

__________________

Vielen Dank

Thomas Reick

Geändert von thomasreick (28.12.2016 um 10:07 Uhr). Grund: typos
thomasreick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.