Yükseltme ve olayları bir veri tanımlama bileşen akış
Bileşen geliştiricileri zam tanımlanan olaylar kümesini IDTSComponentEventsarabirimi üzerinde kullandığı yöntemler arayarak ComponentMetaDataözellik. Özel olaylar kullanarak da tanımlayabilirsiniz EventInfostoplama ve bunları kullanarak yürütme sırasında artırmak FireCustomEventyöntemi. Bu bölüm, oluşturmak ve bir olayı başlatmak açıklar ve tasarım sırasında olayları artırmak zaman yönergeleri sağlar.
Olaylar yükseltme
Bileşenleri yükseltmek olayları kullanarak Fire<X>yöntemleri IDTSComponentMetaData100arabirimi. Bileşen tasarımı ve yürütme sırasında olayları yükseltebilirsiniz. Genellikle sırasında bileşen tasarımı, FireErrorve FireWarningsırasında doğrulama yöntemleri olarak adlandırılan. Bu olayları iletileri görüntüleme Hata listesi bölmesinde SQL Server Veri Akışı Araçları (SSDT)ve bir bileşeni yanlış yapılandırıldığında bileşen kullanıcılara görüşünüzü.
Bileşenleri de yürütme sırasında herhangi bir noktada olayları yükseltebilirsiniz. Olaylar bileşen geliştiricileri yürütülür gibi kullanıcıların bileşen için geribildirim sağlar. Arayan FireErroryöntemi yürütme sırasında büyük bir olasılıkla paket başarısız.
Tanımlama ve özel olaylar yükseltme
Özel olay tanımlama
Özel olaylar çağrılarak oluşturulan Addyöntemi EventInfoskoleksiyonu. Bu koleksiyon veri akışı görev tarafından ayarlayın ve bir özellik olarak bileşeni geliştirici sağlanan PipelineComponenttemel sınıf Bu sınıf, özel etkinlikler, özel olaylar sırasında bileşen tarafından tanımlanmış ve veri akışı görev tarafından tanımlanan içerir RegisterEventsyöntemi.
Özel olaylar bileşeni xml paketini kalıcı olmaz. Bu nedenle, RegisterEventsyöntemi hem tasarım hem yürütme sırasında bileşen izin vermek o tutarsa olayları tanımlamak için denir.
allowEventHandlersParametresi Addyöntemi bileşenin izin verip vermediğini belirtir DtsEventHandlerolay için oluşturulacak nesneler. Dikkat DtsEventHandlerszaman uyumlu olduğu belirtilmemiştir. Bu nedenle bileşen yürütme kadar Çağrılmıyor bir DtsEventHandlerbağlı özel olay yürütme bitirdi. Eğer allowEventHandlersparametresi true, olayın her parametre otomatik olarak herhangi bir kullanılabilir hale DtsEventHandlernesneler arasında oluşturulan ve otomatik olarak tarafından doldurulan değişkenleri SQL Server Integration Servicesçalışma.
Özel olay yükseltme
Bileşenleri yükseltmek özel olaylar çağırarak FireCustomEventyöntemi ve parametreleri olay, metin ve adı sağlama. Eğer allowEventHandlersparametresi true, herhangi bir DtsEventHandlersözel olay tarafından yürütülür için oluşturulan SSISçalışma zamanı altyapısı.
Özel olay örnek
Aşağıdaki kod örneği, özel bir olay sırasında tanımlar bir bileşeni gösterir RegisterEventsyöntem ve olay çalışma zamanında çağırarak tutarsa FireCustomEventyöntemi.
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 paramterTypes, 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 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 paramterTypes, 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, paramterTypes, 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
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, paramterTypes, 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
|