PipelineComponent.GetDependentInputs(Int32) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt eine Auflistung der Eingabe-IDs von Eingaben zurück, die auf weitere Daten warten und daher die angegebene Eingabe blockieren.
public:
virtual System::Collections::ObjectModel::Collection<int> ^ GetDependentInputs(int blockedInputID);
public virtual System.Collections.ObjectModel.Collection<int> GetDependentInputs (int blockedInputID);
abstract member GetDependentInputs : int -> System.Collections.ObjectModel.Collection<int>
override this.GetDependentInputs : int -> System.Collections.ObjectModel.Collection<int>
Public Overridable Function GetDependentInputs (blockedInputID As Integer) As Collection(Of Integer)
Parameter
- blockedInputID
- Int32
Die ID einer Eingabe, die blockiert wird, während andere Eingaben auf weitere Daten warten.
Gibt zurück
Eine Auflistung der Eingabe-IDs von Eingaben, die auf weitere Daten warten, und daher die durch den blockedInputID
-Parameter identifizierte Eingabe blockieren.
Beispiele
Für eine bestimmte Eingabe, die blockiert wird, gibt die folgende Implementierung der GetDependentInputs Methode eine Auflistung der Eingaben zurück, die darauf warten, mehr Daten zu erhalten, und blockieren somit die angegebene Eingabe. Die Komponente identifiziert die blockierenden Eingaben, indem Sie nach eingaben anderer Eingaben als der angegebenen Eingabe überprüfen, die derzeit nicht über Daten verfügen, die zur Verarbeitung in den Puffern verfügbar sind, die die Komponente bereits empfangen hat (inputBuffers[i].CurrentRow() == null
). Die GetDependentInputs-Methode gibt dann die Auflistung der blockierenden Eingaben als Auflistung von Eingabe-IDs zurück.
public override Collection<int> GetDependentInputs(int blockedInputID)
{
Collection<int> currentDependencies = new Collection<int>();
for (int i = 0; i < ComponentMetaData.InputCollection.Count; i++)
{
if (ComponentMetaData.InputCollection[i].ID != blockedInputID
&& inputBuffers[i].CurrentRow() == null)
{
currentDependencies.Add(ComponentMetaData.InputCollection[i].ID);
}
}
return currentDependencies;
}
Hinweise
Wenn Sie den Wert der Microsoft.SqlServer.Dts.Pipeline.DtsPipelineComponentAttribute.SupportsBackPressure Eigenschaft auf das DtsPipelineComponentAttributeObjekt festlegen, und die benutzerdefinierte Datenflusskomponente unterstützt mehr als zwei Eingaben, müssen Sie auch eine Implementierung für die GetDependentInputs Methode true
bereitstellen.
Die Datenfluss-Engine ruft die GetDependentInputs-Methode nur auf, wenn der Benutzer mehr als zwei Eingaben an die Komponente anfügt. Wenn eine Komponente nur zwei Eingaben enthält, und die Methode gibt an, dass eine Eingabe blockiert wird (canProcess
= false
), weiß das IsInputReady Datenflussmodul, dass die andere Eingabe auf den Empfang weiterer Daten wartet. Wenn jedoch mehr als zwei Eingaben vorhanden sind und die Methode angibt, dass eine Eingabe blockiert wird, identifiziert der IsInputReady zusätzliche Code in der GetDependentInputs Methode die Eingaben, die darauf warten, weitere Daten zu erhalten.
Weitere Informationen zur Behandlung übermäßiger Speichernutzung, wenn die Eingaben einer benutzerdefinierten Datenflusskomponente Daten mit ungleichen Preisen erzeugen, finden Sie unter Entwickeln von Datenfluss Komponenten mit mehreren Eingaben.