2016-12-14 5 views
1

Ich habe ein ETL-Projekt, das ich Daten aus einigen 50K Access .MDB-Datenbanken in einem Ordner auf SQL-Server laden muss. Das Problem mit diesen 50K-Datenbankdateien ist, dass sie unterschiedliche Schemas haben und ich den ETL-Prozess brauche, um die Unterschiede identifizieren und korrekt reagieren zu können.SSIS - Überprüfen Sie OLE DB-Quellschema

Zum Beispiel gibt es in einigen der .MDB-Dateien Tabelle A, B und C. In einigen anderen Tabellen gibt es nur Tabelle A und B. (Gleiche Tabelle A und B im Vergleich zu den anderen Tabellen, nur Tabelle C fehlt). Ich muss jede OLE DB-Quelle überprüfen, um zu sehen, welche Tabellen vorhanden sind, um Logik wie IF-Tabelle A zu erreichen, Tabelle A laden, andernfalls die Last umgehen.

Ich habe mein googeln und SO durchsucht, aber alle Fehlerbehandlung oder Prüfmethoden, die ich finden konnte, sind für den SQL-Task ausführen oder Datenkonvertierung Aufgabe. Wenn also irgendjemand ein Licht auf die Lösung für meinen obigen Fall werfen könnte, wäre ich sehr dankbar.

Danke.

+0

Das klingt wie ein Job für BIML. BIML ermöglicht das Erstellen von Paketen auf der Grundlage von Metadaten –

Antwort

0

Kurz gesagt - SSIS geht davon aus, dass Metadaten sich nicht ändern.
Mit einigen Tricks kann diese Einschränkung jedoch verringert werden; unten ist die Liste der vorgeschlagenen Tricks: - tun bedingte Ausführung der folgenden Aufgaben

  1. Test auf Vorhandensein bestimmter Tabelle und basierend auf dem Ergebnis (Beispiel hier How to use SQL to query the metadata in Microsoft Office Access? Like SQL Server's sys.tables, sys.columns etc sehen).
  2. Alle SQL-Anforderungen an MS Access-Tabellen sollten DelayValidation Eigenschaft auf True festgelegt haben. Grund - Verschiebung der SQL-Befehlsprüfung vom Paketstart auf die Ausführung bestimmter Aufgaben. Einige Aufgaben (für fehlende Tabellen) werden nicht ausgeführt; Daher wird es nicht validiert und löst keinen Validierungsfehler aus.
Verwandte Themen