Bagikan melalui


Mensimulasikan Output Kesalahan untuk Komponen Skrip

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

Meskipun Anda tidak dapat langsung mengonfigurasi output sebagai output kesalahan dalam komponen Skrip untuk penanganan otomatis baris kesalahan, Anda dapat mereproduksi fungsionalitas output kesalahan bawaan dengan membuat output tambahan dan menggunakan logika bersyarah dalam skrip Anda untuk mengarahkan baris ke output ini jika sesuai. Anda mungkin ingin meniru perilaku output kesalahan bawaan dengan menambahkan dua kolom output tambahan untuk menerima nomor kesalahan dan ID kolom tempat kesalahan terjadi.

Jika Anda ingin menambahkan deskripsi kesalahan yang sesuai dengan kode kesalahan Layanan Integrasi tertentu yang telah ditentukan sebelumnya, Anda dapat menggunakan GetErrorDescription metode IDTSComponentMetaData100 antarmuka, yang tersedia melalui properti komponen ComponentMetaData Skrip.

Contoh

Contoh yang ditampilkan di sini menggunakan komponen Skrip yang dikonfigurasi sebagai transformasi yang memiliki dua output sinkron. Tujuan komponen Skrip adalah untuk memfilter baris kesalahan dari data alamat dalam database sampel AdventureWorks. Contoh fiktif ini mengasumsikan bahwa kami menyiapkan promosi untuk pelanggan Amerika Utara dan perlu memfilter alamat yang tidak terletak di Amerika Utara.

Untuk mengonfigurasi contoh

  1. Sebelum membuat komponen Skrip baru, buat pengelola koneksi dan konfigurasikan sumber aliran data yang memilih data alamat dari database sampel AdventureWorks. Untuk contoh ini, yang hanya melihat kolom CountryRegionName, Anda cukup menggunakan tampilan Person.vStateCountryProvinceRegion, atau Anda dapat memilih data dengan menggabungkan tabel Person.Address, Person.StateProvince, dan Person.CountryRegion.

  2. Tambahkan komponen Skrip baru ke permukaan perancang Aliran Data dan konfigurasikan sebagai transformasi. Buka Editor Transformasi Skrip.

  3. Pada halaman Skrip , atur properti ScriptLanguage ke bahasa skrip yang ingin Anda gunakan untuk mengodekan skrip.

  4. Klik Edit Skrip untuk membuka Microsoft® Visual Studio® Tools for Applications (VSTA).

  5. Dalam metode Input0_ProcessInputRow, ketik atau tempel kode sampel yang ditunjukkan di bawah ini.

  6. Tutup VSTA.

  7. Pada halaman Kolom Input, pilih kolom yang ingin Anda proses dalam transformasi Skrip. Contoh ini hanya menggunakan kolom CountryRegionName. Kolom input yang tersedia yang Anda biarkan tidak dipilih hanya akan diteruskan melalui tidak berubah dalam aliran data.

  8. Pada halaman Input dan Output, tambahkan output baru, kedua, dan atur nilai SynchronousInputID ke ID input, yang juga merupakan nilai properti SynchronousInputID dari output default. Atur properti ExclusionGroup dari kedua output ke nilai bukan nol yang sama (misalnya, 1) untuk menunjukkan bahwa setiap baris hanya akan diarahkan ke salah satu dari dua output. Beri output kesalahan baru nama yang khas, seperti "MyErrorOutput."

  9. Tambahkan kolom output tambahan ke output kesalahan baru untuk mengambil informasi kesalahan yang diinginkan, yang mungkin menyertakan kode kesalahan, ID kolom tempat kesalahan terjadi, dan mungkin deskripsi kesalahan. Contoh ini membuat kolom baru, ErrorColumn, dan ErrorMessage. Jika Anda menangkap kesalahan Layanan Integrasi yang telah ditentukan sebelumnya dalam implementasi Anda sendiri, pastikan untuk menambahkan kolom ErrorCode untuk nomor kesalahan.

  10. Perhatikan nilai ID kolom input atau kolom yang akan diperiksa komponen Skrip untuk kondisi kesalahan. Contoh ini menggunakan pengidentifikasi kolom ini untuk mengisi nilai ErrorColumn.

  11. Tutup Editor Transformasi Skrip.

  12. Lampirkan output komponen Skrip ke tujuan yang sesuai. Tujuan file datar adalah yang paling mudah dikonfigurasi untuk pengujian ad hoc.

  13. Jalankan paket.

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)  
  
  If Row.CountryRegionName <> "Canada" _  
      And Row.CountryRegionName <> "United States" Then  
  
    Row.ErrorColumn = 68 ' ID of CountryRegionName column  
    Row.ErrorMessage = "Address is not in North America."  
    Row.DirectRowToMyErrorOutput()  
  
  Else  
  
    Row.DirectRowToOutput0()  
  
  End If  
  
End Sub  
public override void Input0_ProcessInputRow(Input0Buffer Row)  
{  
  
  if (Row.CountryRegionName!="Canada"&&Row.CountryRegionName!="United States")  
  
  {  
    Row.ErrorColumn = 68; // ID of CountryRegionName column  
    Row.ErrorMessage = "Address is not in North America.";  
    Row.DirectRowToMyErrorOutput();  
  
  }  
  else  
  {  
  
    Row.DirectRowToOutput0();  
  
  }  
  
}  

Lihat Juga

Penanganan Kesalahan dalam Data
Menggunakan Output Kesalahan dalam Komponen Aliran Data
Membuat Transformasi Sinkron dengan Komponen Skrip