Script görev değişkenleri kullanma
Değişkenler, veri paketindeki diğer nesnelerle değişimi Script görev için mümkün kılar. Daha fazla bilgi için, bkz. SSIS paketi değişkenleri.
Script görev kullanır Variablesözelliği Dtsokuma ve yazma için nesne Variablenesneleri paket.
[!NOT]
ValueÖzelliği Variablesınıf türü olan Object. Script görev olduğundan Option Strictetkin, size döküm gerekir Valuegörüneceği şekilde kullanabilmeniz için uygun türü özelliği
Varolan değişkenleri ekleme ReadOnlyVariablesve ReadWriteVariableslisteleri Komut dosyası görev Düzenleyicisi özel bir komut dosyası için kullanılabilir hale. Değişken adları büyük küçük harf duyarlı olduğunu unutmayın. Komut dosyası içinde değişkenleri her iki türdeki erişim Variablesözelliği Dtsnesnesini. Kullanım Valueözellik okuma ve yazma için bağımsız değişkenler için. Script görev şeffaf olarak komut dosyasını okur ve değişkenlerin değerlerini değiştirir kilitleme yönetir.
Sen-ebilmek kullanma Containsyöntemi Variablestarafından döndürülen koleksiyonu Variableskodu kullanmadan önce bir değişkeni varlığını denetlemek için özellik.
Ayrıca VariableDispenserözellik (Dts.VariableDispenser) değişkenleri Script görev ile çalışma. Kullanırken VariableDispenser, kendi kodunuzu kilitleme semantik ve değişken değeri için veri türlerini ve döküm ele. Sen-ebilmek lüzum-e kullanmak VariableDispenserözelliği yerine Variablestasarım zamanında mevcut değil ama programlı çalışma zamanında oluşturulan değişken çalışmak isterseniz özelliği.
Foreach döngü kapsayıcı içinde kod görev kullanarak
Script görev Foreach döngü kapsayıcı içinde tekrar tekrar çalıştırıldığında, komut dosyası genellikle numaralayıcı geçerli öğenin içeriği ile çalışması gerekiyor. Örneğin, bir Foreach dosya numaralayıcı kullandığınızda, komut dosyası geçerli dosya adını bilmesi gerekiyor; bir Foreach ado numaralayıcı kullandığınızda, komut geçerli satırda veri sütunlarının içeriklerini bilmesi gerekiyor.
Değişkenleri Foreach döngü kapsayıcı ve Script görev arasındaki bu iletişimi mümkün kılar. Tarih Değişken Eşleştirmeleri sayfası Foreach döngü Düzenleyicisi'ni, her öğeyi tek bir Numaralandırılmış öğe tarafından döndürülen veri değişkenleri atamak. Örneğin, bir Foreach dosya numaralayıcı yalnızca dosya adı, dizin 0 döndürür ve Script görev kullanmak istediğiniz her sütun için farklı bir değişken eşlemek çeşitli veri sütunlarının her satır döndüren bir numaralayıcı gerektiriyor ise, bu nedenle yalnızca bir değişken eşleme, gerektirir.
Değişkenleri için numaralandırılmış öğeler eşleştirdikten sonra eşlenen değişkenleri eklemelisiniz ReadOnlyVariablesözelliği Script sayfası Komut dosyası görev Düzenleyicisi komut dosyanız için kullanılabilir hale. İşleyen görüntü dosyaları bir klasörde Foreach döngü kapsayıcı içinde kod görev örneği için bkz: Resim Script görev ile çalışma.
Değişkenleri örneği
Aşağıdaki örnekte, erişim ve paket iş akışı yolunu belirlemek için bir komut dosyası görevi değişkenleri kullanın gösterilmiştir. Tamsayı değişkeni adında oluşturduğunuz örnek varsayar CustomerCountve MaxRecordCountve onlara ReadOnlyVariableskoleksiyonunda Komut dosyası görev Düzenleyicisi. CustomerCountDeğişkenini içeren müşteri kayıtlarının alınacak. Onun değeri değeri büyükse MaxRecordCount, Script görev raporları hata. Bir hata oluştuğunda çünkü MaxRecordCounteşik aşıldı, iş akışının hata yolu herhangi bir gerekli temiz-elbise uygulayabilirsiniz
Örnek başarıyla derlemek için Microsoft.SqlServer.ScriptTask derlemesi için başvuru eklemeniz gerekir.
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
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;
}
}
}
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;
}
}
}
|
Ayrıca bkz.
Görevler
Paketlerinde değişkenleri kullanma