Menggunakan Variabel dalam Tugas Skrip

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

Variabel memungkinkan tugas Skrip untuk bertukar data dengan objek lain dalam paket. Untuk informasi selengkapnya, lihat Variabel Integration Services (SSIS).

Tugas Skrip menggunakan Variables properti objek Dts untuk membaca dari dan menulis ke Variable objek dalam paket.

Catatan

Properti Value kelas Variable berjenis Objek. Karena tugas Skrip mengaktifkan Opsi Ketat , Anda harus mentransmisikan Value properti ke jenis yang sesuai sebelum Anda bisa menggunakannya.

Anda menambahkan variabel yang ada ke ReadOnlyVariables daftar dan ReadWriteVariables di Editor Tugas Skrip untuk membuatnya tersedia untuk skrip kustom. Perlu diingat bahwa nama variabel peka huruf besar/kecil. Dalam skrip, Anda mengakses variabel dari kedua jenis melalui Variables properti objek Dts . Gunakan properti Nilai untuk membaca dari dan menulis ke variabel individual. Tugas Skrip secara transparan mengelola penguncian saat skrip membaca dan memodifikasi nilai variabel.

Anda dapat menggunakan Contains metode koleksi yang Variables dikembalikan oleh Variables properti untuk memeriksa keberadaan variabel sebelum menggunakannya dalam kode Anda.

Anda juga dapat menggunakan VariableDispenser properti (Dts.VariableDispenser) untuk bekerja dengan variabel dalam tugas Skrip. Saat menggunakan VariableDispenser, Anda harus menangani semantik penguncian dan transmisi jenis data untuk nilai variabel dalam kode Anda sendiri. Anda mungkin perlu menggunakan VariableDispenser properti alih-alih Variables properti jika Anda ingin bekerja dengan variabel yang tidak tersedia pada waktu desain tetapi dibuat secara terprogram pada durasi.

Menggunakan Tugas Skrip dalam Kontainer Perulangan Foreach

Ketika tugas Skrip berjalan berulang kali dalam kontainer Foreach Loop, skrip biasanya perlu bekerja dengan konten item saat ini di enumerator. Misalnya, saat menggunakan enumerator File Foreach, skrip perlu mengetahui nama file saat ini; saat menggunakan enumerator Foreach ADO, skrip perlu mengetahui konten kolom di baris data saat ini.

Variabel memungkinkan komunikasi ini antara kontainer Foreach Loop dan tugas Skrip. Pada halaman Pemetaan VariabelEditor Perulangan Foreach, tetapkan variabel ke setiap item data yang dikembalikan oleh satu item yang dijumlahkan. Misalnya, enumerator File Foreach hanya mengembalikan nama file di Indeks 0 dan karenanya hanya memerlukan satu pemetaan variabel, sedangkan enumerator yang mengembalikan beberapa kolom data di setiap baris mengharuskan Anda memetakan variabel yang berbeda ke setiap kolom yang ingin Anda gunakan dalam tugas Skrip.

Setelah Anda memetakan item enumerasi ke variabel, maka Anda harus menambahkan variabel yang dipetakan ke properti ReadOnlyVariables di halaman SkripEditor Tugas Skrip untuk membuatnya tersedia untuk skrip Anda. Untuk contoh tugas Skrip dalam kontainer Foreach Loop yang memproses file gambar dalam folder, lihat Bekerja dengan Gambar dengan Tugas Skrip.

Contoh Variabel

Contoh berikut menunjukkan cara mengakses dan menggunakan variabel dalam tugas Skrip untuk menentukan jalur alur kerja paket. Sampel mengasumsikan bahwa Anda telah membuat variabel bilangan bulat bernama CustomerCount dan MaxRecordCount dan menambahkannya ke koleksi ReadOnlyVariables di Editor Tugas Skrip. Variabel CustomerCount berisi jumlah catatan pelanggan yang akan diimpor. Jika nilainya lebih besar dari MaxRecordCountnilai , tugas Skrip melaporkan kegagalan. Ketika kegagalan terjadi karena MaxRecordCount ambang batas telah terlampaui, jalur kesalahan alur kerja dapat menerapkan pembersihan yang diperlukan.

Agar berhasil mengkompilasi sampel, Anda perlu menambahkan referensi ke rakitan Microsoft.SqlServer.ScriptTask.

Public Sub Main()  
  
    Dim customerCount As Integer  
    Dim maxRecordCount As Integer  
  
    If Dts.Variables.Contains("CustomerCount") = True AndAlso _  
        Dts.Variables.Contains("MaxRecordCount") = True Then  
  
        customerCount = _  
            CType(Dts.Variables("CustomerCount").Value, Integer)  
        maxRecordCount = _  
            CType(Dts.Variables("MaxRecordCount").Value, Integer)  
  
    End If  
  
    If customerCount > maxRecordCount Then  
            Dts.TaskResult = ScriptResults.Failure  
    Else  
            Dts.TaskResult = ScriptResults.Success  
    End If  
  
End Sub  
using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Runtime;  
  
public class ScriptMain  
{  
  
    public void Main()  
    {  
        int customerCount;  
        int maxRecordCount;  
  
        if (Dts.Variables.Contains("CustomerCount")==true&&Dts.Variables.Contains("MaxRecordCount")==true)  
  
        {  
            customerCount = (int) Dts.Variables["CustomerCount"].Value;  
            maxRecordCount = (int) Dts.Variables["MaxRecordCount"].Value;  
  
        }  
  
        if (customerCount>maxRecordCount)  
        {  
            Dts.TaskResult = (int)ScriptResults.Failure;  
        }  
        else  
        {  
            Dts.TaskResult = (int)ScriptResults.Success;  
        }  
  
    }  
  
}  
  

Lihat juga

Variabel Integration Services (SSIS)
Gunakan Variabel dalam Paket