2012-06-11 5 views
8

Ich habe an einem riesigen ETL-Projekt mit mehr als 150 Tabellen gearbeitet und während des Entwurfs musste ich eine große Änderung an Zielspaltennamen und Datentypen für ein paar Tabellen vornehmen.Refresh Zielschema Metadaten in Integration Services

Mein Problem ist, dass ich SSIS nicht erhalten kann, um das neue Schema für die Tabellen zu sehen, die ich änderte. So würde ich gerne wissen, wie kann ich SSIS erhalten, dieses Schema zu aktualisieren? Ich finde es irgendwie lächerlich, dass es keine Möglichkeit gibt, SSIS zu informieren, die Metadaten aus dem Datenbankschema zu aktualisieren, besonders für die Datenbankmigration.

Das Projekt von Grund auf neu zu erstellen kommt nicht in Frage, da ich schon einige Stunden damit verbracht habe. Auch das manuelle Ändern der über 400 Spalten, die ich geändert habe, ist ebenfalls keine Option.

+1

Dieser wird wahrscheinlich Ihr Problem nicht lösen, aber es kann helfen. Gesamtes SSIS-Paket ist nur XML. Sie können XML-Daten mit "Suchen und Ersetzen" ändern oder ein eigenes Werkzeug erstellen. Wenn Sie Änderungen in SSIS verfolgen möchten, müssen Sie UDM (Data Source Views) verwenden. – devarc

+0

Ich habe mich schon vorher mit meinem XML-Paket befasst, aber es gab viel zu viele Spalten, die geändert werden konnten, so dass selbst ein Find/Replace es aufgrund der Spezifität einiger Änderungen nicht reparieren konnte. Vielen Dank. – Ucodia

Antwort

1

Nach meiner vorherigen automatischen Antwort habe ich schließlich festgestellt, was die Aktualisierung der Metadaten verhindert hat.

Als ich meine Datenbank ursprünglich änderte, führte ich tatsächlich ein anderes Skript aus, das eine DROP auf dem Tisch und dann eine CREATE TABLE machte, um die Tabelle von Grund auf neu zu erstellen. Dort war SSIS nie in der Lage, Änderungen zu erkennen, und ich musste alle Dinge in meiner anderen Antwort tun.

Später musste ich heute eine kleine Änderung vornehmen und diesmal habe ich mich für eine ALTER TABLE entschieden. Magisch, dieses Mal entdeckte SSIS alle Änderungen und benachrichtigte mich sogar, Spalten aus dem erweiterten Editor zu aktualisieren, was gut funktionierte.

Also im Grunde all diese Probleme wurden von meinem schlechten Wissen über DBA und seine Best Practices verursacht.

1

Ich fand einen Weg, es zu beheben, aber das war ein bisschen schwierig.

Selbst wenn ich alle Referenzen der Tabelle vollständig aus meinen Paketen entfernte, bekam ich immer die alten Metadaten.

Ich habe immer noch keine klares fix, aber hier ist das, was ich tat, um es zu beheben:

  • entfernt jede Bezugnahme auf betroffene Quell- und Zieltabellen
  • Gelöschte obj und Ordner ist aus dem Projektordner
  • Saved, geschlossen und wieder geöffnet dann das Projekt
  • Erstellt neuen Datenfluss von Grund auf neu und aktualisiert Metadaten schließlich gab es

Ich weiß nicht, wo diese Informationen zwischengespeichert wurden, aber ich vermute, dass der Ordner obj eine zwischengespeicherte Kopie Ihrer Pakete enthält oder dass Visual Studio Metadaten im Speicher behält, die beim Schließen freigegeben werden. Wie auch immer, die folgenden Schritte sollten es beheben.

+0

Ich denke, wenn Sie die Zielkomponente öffnen und auf die Registerkarte Mapping gehen, sollte es die neuen Metadaten aufnehmen. Das funktioniert normalerweise für mich. – rvphx

+0

Das war das erste, was ich tat, aber es gab mir immer die alten Metadaten. – Ucodia

16

Was ist mit der Advanced Editor und drücken Sie die Refresh Taste auf der linken Seite unten?

+0

Dummerweise einfach, aber hat den Job für mich gemacht! – Fishcake

+0

@Fishcake - Etwas, das diese dumm einfache sollte auf dem nicht-Advanced (z. B. der Normal) Editor sein. Ich weiß nicht, warum Microsoft dachte, es wäre eine gute Idee, eine Reihe von, meiner Meinung nach (und ich nehme viele Meinung anderer), BASIC-Funktionalität hinter einem Advanced Editor zu verstecken. – KSwift87