Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
SSIS Integration Runtime in Azure Data Factory
Componentontwikkelaars kunnen een subset van de gebeurtenissen die in de IDTSComponentEvents interface zijn gedefinieerd genereren door de methoden aan te roepen die op de ComponentMetaData property worden blootgesteld. Je kunt ook aangepaste events definiëren door de EventInfos collectie te gebruiken, en ze tijdens de uitvoering verhogen met behulp van de methode FireCustomEvent . Deze sectie beschrijft hoe je een evenement maakt en verhoogt, en geeft richtlijnen over wanneer je evenementen tijdens het ontwerpen moet opvoeren.
Gebeurtenissen genereren
Componenten genereren gebeurtenissen door gebruik te maken van de Fire<X-methoden> van de IDTSComponentMetaData100 interface. Je kunt events genereren tijdens componentontwerp en uitvoering. Typisch worden tijdens het ontwerp van componenten de FireError en FireWarning methoden aangeroepen tijdens validatie. Deze gebeurtenissen tonen berichten in het Foutlijst-paneel van SQL Server Data Tools (SSDT) en geven feedback aan gebruikers van de component wanneer een component verkeerd is geconfigureerd.
Componenten kunnen ook gebeurtenissen op elk moment tijdens de uitvoering oproepen. Events stellen componentontwikkelaars in staat om feedback te geven aan gebruikers van de component terwijl deze wordt uitgevoerd. Het aanroepen van de methode tijdens uitvoering FireError zal waarschijnlijk het pakket laten falen.
Het definiëren en organiseren van aangepaste evenementen
Een aangepaste gebeurtenis definiëren
Aangepaste events worden aangemaakt door de Add methode van de EventInfos collectie aan te roepen. Deze verzameling wordt ingesteld door de dataflow-taak en als eigenschap aan de componentontwikkelaar verstrekt via de PipelineComponent basisklasse. Deze klasse bevat aangepaste gebeurtenissen die worden gedefinieerd door de dataflow-taak en aangepaste gebeurtenissen die door de component tijdens de RegisterEvents methode worden gedefinieerd.
De aangepaste gebeurtenissen van een component worden niet bewaard in het pakket XML. Daarom wordt de RegisterEvents methode zowel tijdens het ontwerp als de uitvoering aangeroepen om de component in staat te stellen de gebeurtenissen die het oproept te definiëren.
De allowEventHandlers-parameter van de Add methode specificeert of de component toestaat DtsEventHandler dat objecten worden aangemaakt voor het evenement. Let op dat DtsEventHandlers synchroon zijn. Daarom hervat de component de uitvoering pas nadat een DtsEventHandler gekoppeld aan het aangepaste event is uitgevoerd. Als de allowEventHandlers-parameterwaar is, wordt elke parameter van het event automatisch beschikbaar gesteld aan objecten DtsEventHandler via variabelen die automatisch worden aangemaakt en ingevuld door de runtime van de SQL Server Integration Services.
Een Custom Event opwekken
Componenten genereren aangepaste gebeurtenissen door de FireCustomEvent methode aan te roepen en de naam, tekst en parameters van het evenement te geven. Als de allowEventHandlers-parameterwaar is, worden alle DtsEventHandlers die voor het aangepaste event zijn aangemaakt uitgevoerd door de SSIS-runtime-engine.
Aangepast Gebeurtenisvoorbeeld
Het volgende codevoorbeeld toont een component die een aangepaste gebeurtenis definieert tijdens de RegisterEvents methode, en vervolgens het event tijdens run oproept door de FireCustomEvent methode aan te roepen.
public override void RegisterEvents()
{
string [] parameterNames = new string[2]{"RowCount", "StartTime"};
ushort [] parameterTypes = new ushort[2]{ DtsConvert.VarTypeFromTypeCode(TypeCode.Int32), DtsConvert.VarTypeFromTypeCode(TypeCode.DateTime)};
string [] parameterDescriptions = new string[2]{"The number of rows to sort.", "The start time of the Sort operation."};
EventInfos.Add("StartingSort","Fires when the component begins sorting the rows.",false,ref parameterNames, ref parameterTypes, ref parameterDescriptions);
}
public override void ProcessInput(int inputID, PipelineBuffer buffer)
{
while (buffer.NextRow())
{
// Process buffer rows.
}
IDTSEventInfo100 eventInfo = EventInfos["StartingSort"];
object []arguments = new object[2]{buffer.RowCount, DateTime.Now };
ComponentMetaData.FireCustomEvent("StartingSort", "Beginning sort operation.", ref arguments, ComponentMetaData.Name, ref FireSortEventAgain);
}
Public Overrides Sub RegisterEvents()
Dim parameterNames As String() = New String(2) {"RowCount", "StartTime"}
Dim parameterTypes As System.UInt16() = New System.UInt16(2) {DtsConvert.VarTypeFromTypeCode(TypeCode.Int32), DtsConvert.VarTypeFromTypeCode(TypeCode.DateTime)}
Dim parameterDescriptions As String() = New String(2) {"The number of rows to sort.", "The start time of the Sort operation."}
EventInfos.Add("StartingSort", "Fires when the component begins sorting the rows.", False, parameterNames, parameterTypes, parameterDescriptions)
End Sub
Public Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer)
While buffer.NextRow
End While
Dim eventInfo As IDTSEventInfo100 = EventInfos("StartingSort")
Dim arguments As Object() = New Object(2) {buffer.RowCount, DateTime.Now}
ComponentMetaData.FireCustomEvent("StartingSort", _
"Beginning sort operation.", arguments, _
ComponentMetaData.Name, FireSortEventAgain)
End Sub