Bagikan melalui


Meningkatkan Output Kesalahan dengan Komponen Skrip

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

Secara default, dua kolom tambahan dalam output kesalahan Layanan Integrasi, ErrorCode dan ErrorColumn, hanya berisi kode numerik yang mewakili nomor kesalahan dan ID kolom tempat kesalahan terjadi. Nilai numerik ini mungkin penggunaan terbatas tanpa deskripsi kesalahan dan nama kolom yang sesuai.

Topik ini menjelaskan cara menambahkan deskripsi kesalahan dan nama kolom ke data output kesalahan yang ada dalam aliran data dengan menggunakan komponen Skrip. Contoh menambahkan deskripsi kesalahan yang sesuai dengan kode kesalahan Layanan Integrasi tertentu yang telah ditentukan dengan menggunakan GetErrorDescription metode IDTSComponentMetaData100 antarmuka, yang tersedia melalui ComponentMetaData properti komponen Skrip. Kemudian contoh menambahkan nama kolom yang sesuai dengan ID silsilah yang diambil dengan menggunakan GetIdentificationStringByID metode antarmuka yang sama.

Catatan

Jika Anda ingin membuat komponen yang dapat digunakan kembali dengan lebih mudah di beberapa tugas Aliran Data dan beberapa paket, pertimbangkan untuk menggunakan kode dalam sampel komponen Skrip ini sebagai titik awal untuk komponen aliran data kustom. Untuk informasi selengkapnya, lihat Mengembangkan Komponen Aliran Data Kustom.

Contoh

Contoh yang ditampilkan di sini menggunakan komponen Skrip yang dikonfigurasi sebagai transformasi untuk menambahkan deskripsi kesalahan dan nama kolom ke data output kesalahan yang ada dalam aliran data.

Untuk informasi selengkapnya tentang cara mengonfigurasi komponen Skrip untuk digunakan sebagai transformasi dalam aliran data, lihat Membuat Transformasi Sinkron dengan Komponen Skrip dan Membuat Transformasi Asinkron dengan Komponen Skrip.

Untuk mengonfigurasi contoh Komponen Skrip ini

  1. Sebelum membuat komponen Skrip baru, konfigurasikan komponen upstream dalam aliran data untuk mengalihkan baris ke output kesalahannya saat kesalahan atau pemotongan terjadi. Untuk tujuan pengujian, Anda mungkin ingin mengonfigurasi komponen dengan cara yang memastikan bahwa kesalahan akan terjadi-misalnya, dengan mengonfigurasi transformasi Pencarian antara dua tabel tempat pencarian akan gagal.

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

  3. Sambungkan output kesalahan dari komponen upstream ke komponen Skrip baru.

  4. Buka Editor Transformasi Skrip, dan pada halaman Skrip, untuk properti ScriptLanguage, pilih bahasa skrip.

  5. Klik Edit Skrip untuk membuka IDE Microsoft® Visual Studio® Tools for Applications (VSTA) dan tambahkan kode sampel yang ditunjukkan di bawah ini.

  6. Tutup VSTA.

  7. Di Editor Transformasi Skrip, pada halaman Kolom Input, pilih kolom ErrorCode dan ErrorColumn.

  8. Pada halaman Input dan Output , tambahkan dua kolom baru.

    • Tambahkan kolom output baru jenis String bernama ErrorDescription. Tingkatkan panjang default kolom baru menjadi 255 untuk mendukung pesan panjang.

    • Tambahkan kolom output baru lainnya dari jenis String bernama ColumnName. Tingkatkan panjang default kolom baru menjadi 255 untuk mendukung nilai panjang.

  9. Tutup Editor Transformasi Skrip.

  10. Lampirkan output komponen Skrip ke tujuan yang sesuai. Tujuan File Datar adalah yang paling mudah dikonfigurasi untuk pengujian ad hoc.

  11. Jalankan paket.

Public Class ScriptMain      ' VB
    Inherits UserComponent
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

        Row.ErrorDescription = _
            Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)

        Dim componentMetaData130 = TryCast(Me.ComponentMetaData, IDTSComponentMetaData130)

        If componentMetaData130 IsNot Nothing Then

            If Row.ErrorColumn = 0 Then
                ' 0 means no specific column is identified by ErrorColumn, this time.
                Row.ColumnName = "Check the row for a violation of a foreign key constraint."
            ELSE If Row.ErrorColumn = -1 Then
                ' -1 means you are using Table Lock for a Memory Optimised destination table which is not supported.
                Row.ColumnName = "Table lock is not compatible with Memory Optimised tables."
            Else
                Row.ColumnName = componentMetaData130.GetIdentificationStringByID(Row.ErrorColumn)
            End If
        End If
    End Sub
End Class
public class ScriptMain:      // C#
    UserComponent
{
    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);

        var componentMetaData130 = this.ComponentMetaData as IDTSComponentMetaData130;
        if (componentMetaData130 != null)
        {
            // 0 means no specific column is identified by ErrorColumn, this time.
            if (Row.ErrorColumn == 0)
            {
                Row.ColumnName = "Check the row for a violation of a foreign key constraint.";
            }
            // -1 means you are using Table Lock for a Memory Optimised destination table which is not supported.
            else if (Row.ErrorColumn == -1)
            {
                Row.ColumnName = "Table lock is not compatible with Memory Optimised tables.";
            }
            else
            {
                Row.ColumnName = componentMetaData130.GetIdentificationStringByID(Row.ErrorColumn);
            }
        }
    }
}

Lihat Juga

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