Komut dosyası görev değişkenleri kullanma
Değişkenler komut görevin diğer nesnelerle veri değişimi sağlamak paket.Daha fazla bilgi için bkz:Tümleştirme Hizmetleri değişkenleri.
Komut dosyası görev kullanır Variables() özellik Dts Nesne okuma ve yazma Variable Paketteki nesneleri.
Not
The Value() özellik of the Variable class is of type Object. Komut dosyası görev olduğundan Option Strict etkinleştirildiğinde, dönüştürmelisiniz Value() özellik kullanabilmeniz için önce uygun türü.
Varolan değişkenlere eklediğiniz ReadOnlyVariables() ve ReadWriteVariables() listelerinin Komut dosyası görev Düzenleyicisi özel bir komut dosyası tarafından kullanılabilir duruma getirmek için.Değişken adları büyük/küçük durum duyarlı olduğunu unutmayın.Her iki türdeki değişkenler, komut dosyası içinde erişim Variables() özellik Dts nesne. Use Value özellik, okuma ve bağımsız değişkenler için. Görev komut dosyası, komut dosyasını okur ve değişkenlerin değerlerini değiştirir kilitleme saydam olarak yönetir.
Kullanabileceğiniz Contains(Object) yöntem Variables döndürülen koleksiyon Variables() kodunuzda kullanmadan önce bir değişken varlığını denetlemek için özellik'ı tıklatın.
Ayrıca VariableDispenser() () özellikDts.VariableDispenser) komut dosyası görev değişkenleri çalışmak. Kullanırken VariableDispenser(), kendi kodunuzu kilitleme semantik hem de çevrim değişken değerleri için veri türlerini işlemesi gerekir. Kullanmanız gereken VariableDispenser() yerine Variables() Tasarım sırasında kullanılabilir olmayan bir değişkenle birlikte çalışmak isterseniz özellik saat programsal olarak çalışma sırasında oluşturulur, ancak saat.
Bir Foreach döngü kapsayıcı içindeki komut dosyası görev kullanma
Ne zaman bir komut dosyası görev sürekli bir Foreach döngü içinde çalışır kapsayıcı, komut dosyasının içeriğini numaralayıcı geçerli öğe çalışmak genellikle gerekir.Örneğin, bir Foreach dosya numaralayıcı kullanırken, komut dosyası geçerli dosya adını bilmesi gerekir; bir Foreach ADO numaralayıcı kullanırken, komut dosyasının geçerli satırda veri sütunlarının içeriklerini bilmeniz gerekir.
Değişkenleri Foreach döngü kapsayıcı kod görev arasındaki bu iletişimi sağlar.Üzerinde Değişken eşlemeler sayfaForeach döngü Düzenleyicisi, her öğeyi tek bir numaralanmış öğe tarafından döndürülen veri için atama değişkenleri.Örneğin, bir Foreach dosya numaralayıcı yalnızca dosya adı altında Dizin 0 döndürür ve komut dosyası görev kullanmak istediğiniz her sütun için farklı bir değişken eşlemek birkaç veri sütunu, her satırda döndüren bir Numaralandırıcı gerekir; bu nedenle yalnızca bir değişken eşleme gerektirir.
Sonra değişkenlere numaralandırılmış öğeler eşlenen sonra eşleşen değişkenler için eklemelisiniz ReadOnlyVariables özellik üzerindeki Komut dosyası sayfaKomut dosyası görev Düzenleyicisi , komut dosyanız için kullanılabilir duruma getirmek için.Resim dosyalarını bir klasörde işleyen bir Foreach döngü kapsayıcı içindeki komut dosyası görev örneği için bkz: Komut dosyası göreve görüntüleri ile çalışma.
Değişkenleri örneği
Aşağıdaki örnek komut dosyası göreve belirlemek için kullanmak gösterilmiştir yol, paket iş akışı.Örnek adında bir tamsayı değişken oluşturduğunuz varsayılır. CustomerCount ve MaxRecordCount ve bunları ReadOnlyVariables koleksiyon, Komut dosyası görev Düzenleyicisi.The CustomerCount variable contains the number of customer records to be imported.Değeri değerinden büyükse MaxRecordCount, görev komut dosyası hata bildirir. Çünkü bir hata oluştuğunda MaxRecordCount eşiği aşıldı, iş akışı hata yolunu tüm gerekli temizleme uygulayabilirsiniz.
Başarıyla örnek derlemek için Microsoft.SqlServer.ScriptTask bir başvuru eklemeniz gerekir derleme.
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;
}
}
}
|