ErrorColumn Wert existiert nicht als Herkunfts-ID
Während der Einfügung in eine Zieltabelle, jeder Fehler, der Auftritt, ist die Weiterleitung von Fehlern Tabelle, wo wir sehen können, die ErrorCode
und ErrorColumn
. Das problem ist, dass wir einen Wert in ErrorColumn
die nicht überall existieren innerhalb des Pakets. Nämlich, es gibt nicht eine einzige Spalte, die LineageID
gleich ist, ist ErrorColumn
.
Später, während die NULL-Eintrag in jeder Spalte eins nach dem anderen, ich fand die Spalte, in der das problem verursacht. Wenn ich Analysierte die Spalte innerhalb eines Datenfluss-task-Sie haben nicht die LineageID
berichtet wurde dass in einem ErrorColumn
. Zum Beispiel, die ErrorColumn
berichtet wurde 413, aber LineageID
84 während der ersten Zusammenführen, und es ändert sich während der verschiedenen Sortierungen. Unabhängig davon, dass, es wird nie 413. Diese ErrorColumn
- ID (413) überhaupt nicht existieren, doch es wird berichtet, während der Fehler-Umleitung insert into destination source (Error-Tabelle).
Ich habe viele Seiten, aber Sie alle Vorschläge auflisten über ComponenteMetaData.InputCollection
oder ComponentMetaData.OutputCollection
in einem script-task, und klicken Sie dann auflisten in Spalten, um Sie zu finden LineageID
, aber es war ohne Erfolg.
Wie gesagt, das problem hab ich gelöst, aber wie wir in der frühen Phase des ETL-Prozesses, dies könnte passieren, in einigen anderen Fällen. Wie kann dieses problem angegangen werden?
InformationsquelleAutor Husein Roncevic | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich Kopier meine Antwort so erhalten wir eine autorisierende Q&A auf der Website
Was ist der einfache Weg, um suchen Sie die Spalte name aus Lineageid in SSIS
Ich erinnere mich, das kann nicht sein, dass hart, ich kann das schreiben eines Skripts in der Fehlermeldung umleiten lookup die Spalte name aus der Eingangs-Sammlung.
string badColumn = this.ComponentMetaData.InputCollection[Row.ErrorColumn].Name;
Was ich gelernt habe, war die fehlerhafte Spalte ist nicht in dieser Sammlung. Gut, es ist aber der Fehlerspalte berichtet, ist nicht ganz das, was ich brauchte. Ich konnte nicht finden, dass-Paket, aber hier ist ein Beispiel, warum ich nicht bekommen konnte was ich brauchte. Hoffentlich haben Sie mehr Glück.
Dies ist eine einfache Daten fließen, wird ein Fehler generiert, sobald es trifft die abgeleitete Spalte, die aufgrund der division durch null. Die Abgeleitete Spalte erzeugt eine neue Spalte ein (LookAtMe) als das Ergebnis der division. Der Daten-viewer auf die Fehlerausgabe sagt mir die fehlerhafte Spalte ist 73. Mit dem obigen script-Logik, wenn ich versucht, auf Spalte 73 in der input-Sammlung, es ist zum scheitern verurteilt, weil das nicht in der Sammlung. LineageID 73 ist LookAtMe und LookAtMe ist nicht mein Fehler, Zweig, es ist nur in der nicht-Fehler-Zweig.
Dies ist eine Kopie meiner XML-und Sie können sehen,, ja, das outputColumn id 73 ist LookAtme.
Ich wollte wirklich, dass die Daten, obwohl, und ich bin clever, so kann ich union alle meine Ergebnisse wieder zusammen und dann bedingtes teilen, es wieder heraus zu Holen. Das problem ist, Union All ist eine asynchrone Umwandlung. Async-Transformationen Ergebnis in die Daten kopiert werden von einer Reihe von butters zu anderen was in...die neue Linie-ids vergeben werden, so dass auch mit einer union-all das bringen die beiden Ströme wieder zusammen, wäre Sie nicht in der Lage, um die Datenfluss-Kette zu finden, die original-lineage-id, weil es in einem anderen Puffer.
Sich um diesen Punkt, ich Niederlage und beschlossen, ich könnte Leben, ohne intelligent/hilfsbereit error reporting in meiner Pakete.
2012
Der 2012-Version von SSIS verändert, wie Sie verwendet LineageID zu halten-Spalten zu synchronisieren. Anstelle der Komponenten die Zuordnung einer Anzahl von einer Quelle zur Senke, gingen Sie mit einer textuellen Darstellung des Elements. Die XML referenziert oben würde jetzt so Aussehen
Wenn man sich die ErrorColumn jetzt, dass Sie gar nicht Verweis auf die textliche lineageid. Stattdessen werden Sie in der Referenz-Spalte 6. Wenn ich durch die XML-Quelle, werde ich nicht finden, einen Verweis auf Spalte 6 überall. Es müssen einige run-time-Magie.
Das Ergebnis ist leider das gleiche - Sie haben keinen Zugriff auf die Fehler-Spalte, da es in dieser Komponente, denn es existiert nur in den Output-Spalten-Auflistung. Es ist nicht verfügbar in der Error-Auflistung Spalten.
outputColumn
Sie zeigen in Ihrem Beispiel nicht sein, dass das format in SSIS 2012. LineageID ist kein numerischer Wert mehr, sondern eher ein string-Wert, der aussieht wie ein Weg. Trotzdem danke für die Antwort, aber es muss doch eine Möglichkeit zum identifizieren der problematischen Spalte.Vereinbart, dass die XML-datiert war, so dass ich aktualisiert die Antwort auf Adresse 2012. Ich freue mich auf Sie der Lösung des Problems und der Buchung eine Antwort, da ich noch zu entdecken, die es trotz wiederholter versuche.
Hi Downvoter (@TheOptimusPrimus) Können Sie mir helfen zu verstehen, was zu dieser Antwort ist nicht sinnvoll, da die DV-Taste gibt, damit ich verbessern die Antwort?
Da dies die höchste stimmten die Antwort an dieser Stelle möchte ich mal sagen das eine Lösung, die ich gefunden in dieser Antwort
InformationsquelleAutor billinkc
Ich weiß, das ist eine späte Antwort, aber ich bin neu in der SSIS-Spiel. Ich habe eine Lösung geschaffen, die
Überprüfen Sie heraus die volle Lösung hier.
BEARBEITEN
Hier ist die kurze version.
execsObj
undlineageIds
4. Erstellen Skriptkomponente in Datenfluss mit ReadOnly-Zugriff auf
lineageIds
und den folgenden code.Definitiv ein solider Ansatz, aber passt SO community-standards, möchten Sie vielleicht, um zu sehen, wenn Sie integrieren können einige der link-material hier. Theorie, falls ein link tot ist, so ist auch die Nützlichkeit der Antwort auf die zukünftigen Leser
InformationsquelleAutor sorrell
Rechten Maustaste auf CSV-Komponente (und vielen anderen Komponenten), und wählen Sie "show advanced editor". Gehen Sie auf die Letzte Registerkarte "input-und output-Eigenschaften"
Auf diesem Bildschirm sehen Sie im Baum-Menü für die Ausgabe von Spalten (NICHT(!) externe Spalten). Diese haben die lineage-id in der "gemeinsamen Eigenschaften"
Gibt es eine Menge von jabber, das ist schwer zu finden, unmöglich zu finden, ohne neu zu schreiben den code von visual studio selbst ist und was nicht, aber ich habe gerade überprüft dieses auf beiden 2010 und 2012 auf verschiedenen Systemen und es ist nicht schwerer, dann das, was ich eben beschrieben habe.
Script Component
so dass ich hinzufügen, die Spalte name in der Fehler-Tabelle in eine Datenbank. Manuell dies zu tun, ist nicht eine Lösung für mein Projekt.InformationsquelleAutor Tristan