Share via


Menaikkan dan Menentukan Peristiwa dalam Komponen Aliran Data

Berlaku untuk: Integration Runtime SSIS SQL Server di Azure Data Factory

Pengembang komponen dapat meningkatkan subset peristiwa yang ditentukan dalam IDTSComponentEvents antarmuka dengan memanggil metode yang diekspos pada ComponentMetaData properti . Anda juga dapat menentukan peristiwa kustom dengan menggunakan EventInfos koleksi , dan meningkatkannya selama eksekusi dengan menggunakan FireCustomEvent metode . Bagian ini menjelaskan cara membuat dan menaikkan acara, dan memberikan panduan tentang kapan Anda harus menaikkan peristiwa pada waktu desain.

Memunculkan Peristiwa

Komponen meningkatkan peristiwa dengan menggunakan metode Fire<X> antarmuka IDTSComponentMetaData100 . Anda dapat menaikkan peristiwa selama desain dan eksekusi komponen. Biasanya, selama desain komponen, FireError metode dan FireWarning dipanggil selama validasi. Peristiwa ini menampilkan pesan di panel Daftar Kesalahan SQL Server Data Tools (SSDT) dan memberikan umpan balik kepada pengguna komponen saat komponen salah dikonfigurasi.

Komponen juga dapat meningkatkan peristiwa kapan saja selama eksekusi. Peristiwa memungkinkan pengembang komponen untuk memberikan umpan balik kepada pengguna komponen saat dijalankan. Memanggil FireError metode selama eksekusi kemungkinan akan gagal dalam paket.

Menentukan dan Menaikkan Peristiwa Kustom

Menentukan Peristiwa Kustom

Peristiwa kustom dibuat dengan memanggil Add metode pengumpulan EventInfos . Koleksi ini diatur oleh tugas aliran data dan disediakan sebagai properti untuk pengembang komponen melalui PipelineComponent kelas dasar. Kelas ini berisi peristiwa kustom yang ditentukan oleh tugas aliran data dan peristiwa kustom yang ditentukan oleh komponen selama RegisterEvents metode .

Peristiwa kustom komponen tidak bertahan dalam XML paket. Oleh karena itu, RegisterEvents metode ini dipanggil selama desain dan eksekusi untuk memungkinkan komponen menentukan peristiwa yang diangkatnya.

Parameter allowEventHandlers dari Add metode menentukan apakah komponen memungkinkan DtsEventHandler objek dibuat untuk peristiwa tersebut. Perhatikan bahwa DtsEventHandlers sinkron. Oleh karena itu komponen tidak melanjutkan eksekusi sampai terlampir DtsEventHandler pada peristiwa kustom telah selesai dieksekusi. Jika parameter allowEventHandlersbenar, setiap parameter peristiwa secara otomatis tersedia untuk objek apa pun DtsEventHandler melalui variabel yang dibuat dan diisi secara otomatis oleh runtime SQL Server Integration Services.

Menaikkan Peristiwa Kustom

Komponen meningkatkan peristiwa kustom dengan memanggil FireCustomEvent metode , dan memberikan nama, teks, dan parameter peristiwa. Jika parameter allowEventHandlersbenar, apa pun DtsEventHandlers yang dibuat untuk peristiwa kustom dijalankan oleh mesin run-time SSIS.

Sampel Peristiwa Kustom

Contoh kode berikut menunjukkan komponen yang menentukan peristiwa kustom selama RegisterEvents metode , lalu menaikkan peristiwa pada durasi dengan memanggil FireCustomEvent metode .

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  

Lihat juga

Penanganan Aktivitas Integration Services (SSIS)
Menambahkan Penanganan Aktivitas ke Paket