Betik Görevinde Değişkenleri Kullanma

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı

Değişkenler, Script görevinin paketteki diğer nesnelerle veri alışverişini mümkün kılar. Daha fazla bilgi için bkz. Integration Services (SSIS) Değişkenleri.

Script göreviVariables, paketteki nesneleri okumak ve yazmak Variable için Dts nesnesinin özelliğini kullanır.

Note

Value Sınıfın Variable özelliği Nesne türündendir. Script görevinde Option Strict etkin olduğu için, özelliği kullanmak için uygun türe dökmeniz Value gerekir.

Script Task Editörü'nde ve listelerine mevcut değişkenleri ReadOnlyVariablesReadWriteVariables ekleyerek onları özel scripte erişilebilir kılıyorsunuz. Değişken isimlerinin beve duyarlı olduğunu unutmayın. Script içinde, her iki tipin değişkenlerine DtsVariables nesnesinin özelliği üzerinden erişebilirsiniz. Değer özelliğini kullanarak bireysel değişkenleri okumak ve yazmak için kullanın. Script görevi, script değişkenlerin değerlerini okuyup değiştirirken kilitlemeyi şeffaf şekilde yönetir.

Contains Özelliğin döndüren Variables koleksiyon yöntemini Variables kullanarak kodunuzda kullanmadan önce değişkenin varlığını kontrol edebilirsiniz.

Ayrıca Script görevinde değişkenlerle çalışmak için (Dts.VariableDispenser) VariableDispenser özelliğini de kullanabilirsiniz. Kullanırken VariableDispenserhem kilitleme semantiği hem de değişken değerler için veri tiplerinin dökümünü kendi kodunuzda halletmelisiniz. Tasarım zamanında mevcut olmayan ama çalışma zamanında programatik olarak oluşturulan bir değişkenle çalışmak istiyorsanız, özelliği yerine Variables özelliği kullanmanız VariableDispenser gerekebilir.

Foreach döngü konteyneri içinde script görevinin kullanılması

Bir Script görevi Foreach Loop konteynerinde tekrar tekrar çalıştığında, script genellikle enumerator'daki mevcut öğenin içeriğiyle çalışmak zorundadır. Örneğin, bir Foreach Dosya sayılayıcısı kullanılırken, betik mevcut dosya adını bilmelidir; Foreach ADO enumerator kullanıldığında, betik, mevcut veri satırındaki sütunların içeriğini bilmelidir.

Değişkenler, Foreach Loop konteyneri ile Script görevi arasındaki bu iletişimi mümkün kılar. Foreach Döngü Editörü'nünDeğişken Haritaları sayfasında, tek bir sayılan öğe tarafından döndürülen her veri öğesine değişkenler atayın. Örneğin, bir Foreach Dosyası sayacısı yalnızca Index 0'da bir dosya adını döndürür ve bu nedenle sadece bir değişken eşlemesi gerektirir; oysa her satırda birkaç sütun veri döndüren bir sayacının Script görevinde kullanmak istediğiniz her sütuna farklı bir değişken eşlemesini gerektirir.

Sayılan öğeleri değişkenlere eşledikten sonra, eşlenmiş değişkenleri Script Görev Editörü'nünScript sayfasındaki ReadOnlyVariables özelliğine eklemelisiniz ki bunları scriptinize erişilebilir hale getiresiniz. Bir klasördeki görüntü dosyalarını işleyen bir Foreach Loop konteyneri içindeki bir Script görevi örneği için bkz. Script Görevi ile Görsellerle Çalışma.

Değişkenler Örneği

Aşağıdaki örnek, paket iş akışının yolunu belirlemek için bir Script görevinde değişkenlere nasıl erişileceğini ve kullanılacağını gösterir. Örnek, tam sayı değişkenleri oluşturupCustomerCountMaxRecordCount Script Görev Editörü'ndeki ReadOnlyVariables koleksiyonuna eklediğinizi varsayar. Değişken, CustomerCount içe aktarılacak müşteri kayıt sayısını içerir. Değeri 'den MaxRecordCountbüyükse, Script görevi başarısızlık raporu verir. Eşik aşıldığında bir arıza meydana MaxRecordCount geldiğinde, iş akışının hata yolu gerekli temizliği uygulayabilir.

Örneği başarılı bir şekilde derlemek için Microsoft'a bir referans eklemeniz gerekir. SqlServer.ScriptTask assembly.

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;  
        }  
  
    }  
  
}