Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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;
}
}
}