Menggunakan Variabel dalam Tugas Skrip
Berlaku untuk: SQL Server SSIS Integration Runtime 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 dapat 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 waktu proses.
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 antara kontainer Foreach Loop dan tugas Skrip. Pada halaman Pemetaan Variabel Editor 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 oleh karena itu hanya memerlukan satu pemetaan variabel, sedangkan enumerator yang mengembalikan beberapa kolom data di setiap baris mengharuskan Anda untuk 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 Skrip Editor 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 rekaman pelanggan yang akan diimpor. Jika nilainya lebih besar dari MaxRecordCount
nilai , 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