Komut dosyası görev değişkenleri kullanma
Değişkenleri olanaklı hale getirir diğer nesneleri ile veri alışverişi Script görev paket.Daha fazla bilgi için bkz: Tümleştirme Hizmetleri değişkenleri.
Komut dosyası görev kullanır Variables özellik Dts nesnesi için okuma ve yazma için Variable nesneleri paket.
Varolan değişkenlerini ekleme ReadOnlyVariables ve ReadWriteVariables listeler Komut dosyası görev Düzenleyicisi özel bir komut dosyası kullanılabilir hale getirmek için.Değişken adları büyük küçük durum duyarlı olduğunu unutmayın.Komut dosyası içinde değişkenleri her iki türdeki erişmek Variables özellik Dts nesne.Use Value özellik okuma ve yazma için bağımsız değişkenler.Komut dosyası görev komut dosyasını okur ve değişkenlerin değerlerini değiştirir gibi kilitleme saydam olarak yönetir.
Kullanabileceğiniz Contains yöntem, Variables koleksiyon tarafından döndürülen Variables özellik için kod. kullanmadan önce bir değişken varlığını denetle
Ayrıca VariableDispenser özellik (Dts.VariableDispenser) komut dosyası görev. değişkenleri çalışmak içinKullanırken VariableDispenser, her iki kilitleme işlemesi gerekir semantik ve kendi kodunu. değişken değerleri için veri türlerine çevrimKullanmanız gerekebilir VariableDispenser yerine Variables tasarım zamanında kullanılabilir olmayan bir değişken ile çalışmak istiyorsanız, özellik saat ancak programlı çalışma zamanında oluşturulan saat.
Foreach döngü kapsayıcı içinde kod görev kullanma
Bir komut dosyası görevi bir Foreach döngü kapsayıcı içinde sürekli olarak çalıştığında, komut dosyası genellikle numaralayıcı geçerli öğe içeriğini çalışmak gerekiyor.Ö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 geçerli satırda veri sütunlarının içeriklerini bilmek ister.
Değişkenleri Foreach döngü kapsayıcı komut dosyası görev arasındaki bu iletişimi mümkün kılar.Üzerinde Değişken eşleştirmeleri sayfa 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 bir dosya adı dizin 0 döndürür ve Script görev içinde kullanmak istediğiniz her sütun için farklı bir değişken eşlemek birkaç veri sütunlarının her satırda verir bir sýralayýcý gerektiriyor, ancak bu nedenle yalnızca bir değişken eşleme.
Numaralandırılan öğe değişkenleri için eşlenen sonra sonra eşlenen değişkenleri için eklemeniz gerekir ReadOnlyVariables özellik Script sayfa Komut dosyası görev Düzenleyicisi komut kullanılabilir hale getirmek için.Görüntü dosyalarını bir klasörde işleyen bir Foreach döngü kapsayıcı içinde kod görev örneği için bkz: Görüntülerle Script görev ile çalışma.
Örnek değişkenleri
Aşağıdaki örnek, nasıl erişebilir ve değişkenleri belirlemek için bir komut dosyası görevi gösterir yol , paket iş akışı.Tamsayı değişken adında oluşturulan örnek varsayar CustomerCount ve MaxRecordCount ve bunlara eklenen 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ük ise, MaxRecordCount, komut dosyası görev raporları hatası.Bir hata ortaya çıktığında çünkü MaxRecordCount eşiği aşılabilir, hata yol iş akışı tüm gerekli temiz-kurduğunuz uygulayabilirsiniz
Örnek başarıyla 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;
}
}
}
|
Ayrıca bkz.