Es gibt mehrere Blogs, die behaupten, SSIS-Transformationen in blockierende (asynchrone), nicht blockierende (synchrone) und teilweise blockierende (asynchrone) zu kategorisieren.
Bei der Untersuchung der spezifischen Frage: Ist Multicast synchron (nicht blockierend) oder asynchron (teilweise blockierend)?
Eine Ressource behauptet asynchron: "Der Multicast ist eine asynchrone (auch als teilweise blockierende) Transformation bekannte) Quelle: http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx
und eine weitere syncrone: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/
Andere Quellen behaupten, dass die DQS-Bereinigungstransformation eine nicht blockierende Transformation ist, aber sie scheint mir teilweise blockierend zu sein.
Bitte antworten Sie nicht mit einem Link zu einer Liste von Transformationen, die nach Typ kategorisiert sind. Die Antwort auf diese Frage wird hoffentlich eine strengere Methode ermöglichen, um eine korrekte Antwort zu liefern.
Da die teilweise blockierenden und blockierenden Transformationen Daten in neue Puffer verschieben, im Gegensatz zu den nicht blockierenden, die den vorhandenen Puffer bearbeiten, gehe ich davon aus, dass die Lösung darin besteht, die Puffererstellung während der Transformationsausführung zu überwachen, bin mir jedoch unsicher (a ) ob dies die endgültige Antwort ergibt und (b) wie dies zu tun ist.
Ich glaube, dass eine nicht blockierende Transformation nicht dazu führt, dass ein neuer Ausführungsbaum beginnt. Daher liegt die Antwort möglicherweise in der Protokollierung der PipelineExectionTrees und PipelineExecutionPlan. Dies kann zwischen synchron und asynchron unterscheiden, kann jedoch nicht zwischen teilweisem und vollständigem Blockieren unterscheiden.
quelle
Antworten:
Eine blockierende Operation muss warten, bis alle Zeilen gesehen und verarbeitet wurden, bevor sie mit dem Auffüllen von Puffern beginnen kann.
Teilweise blockierende Vorgänge schreiben Daten in neue Puffer, die erst beim nächsten Vorgang verarbeitet werden, wenn jeder Puffer (in der Regel knapp unter 10.000 Zeilen) gefüllt ist.
Bei einer nicht blockierenden Operation kann die nachfolgende Operation denselben Puffer bearbeiten, da jede Zeile verarbeitet wird.
In vielen Texten wird "teilweise blockieren" jedoch als "nicht blockieren" bezeichnet, da das Verhalten viel näher an "nicht blockieren" liegt als an "blockieren".
Sie sollten in der Lage sein zu erkennen, was los ist, indem Sie den Datenfluss beobachten und sehen, wann die Zahlen an jedem Punkt ansteigen.
quelle