Za pomocą zmiennych w zadaniu skryptów
Zmienne utworzyć zadanie skryptu do wymiany danych z innych obiektów w pakiet.Aby uzyskać więcej informacji zobaczIntegration Services Variables.
Korzysta z zadań skryptów Variables() Właściwość Dts obiekt, aby odczytywać i zapisywać Variable obiekty w pakiecie.
Uwaga
The Value() właściwość of the Variable class is of type Object. Ponieważ zadanie skryptu jest Option Strict włączone, należy oddać Value() Właściwość do odpowiedniego typu, zanim będzie można go używać.
Dodawanie istniejących zmiennych, które ReadOnlyVariables() i ReadWriteVariables() Wyświetla listę w Edytor zadań skryptu , aby udostępnić je do skryptu niestandardowego.Należy pamiętać, że jest uwzględniana wielkość liter w nazwach zmiennych.W skrypcie, jest dostęp do obu typów, za pomocą zmiennych Variables() Właściwość Dts obiekt. Użycie Value Właściwość odczytywać i zapisywać dane w poszczególnych zmiennych. Zadanie skryptu zarządza przezroczysty, blokowania, skrypt odczytuje i modyfikuje wartości zmiennych.
Można użyć Contains(Object) Metoda Variables kolekcja zwróconego przez Variables() Właściwość, aby sprawdzić, czy istnieje zmienna przed użyciem go w kodzie.
Można również użyć VariableDispenser() Właściwość)Dts.VariableDispenser) do pracy z zmiennych w zadania skryptu. Podczas korzystania z VariableDispenser(), musi obsługiwać semantyka blokowania i rzutowania typów danych dla wartości zmiennych, które w własny kod. Należy użyć VariableDispenser() Właściwość zamiast Variables() Właściwość, aby pracować z zmienna, która nie jest dostępny na projekt czas, ale jest tworzona programowo przy uruchomieniu czas.
Za pomocą skryptu zadania w pętlę Foreach kontener
Gdy skrypt uruchamiany przez zadanie wielokrotnie w pętlę Foreach kontener, skrypt zwykle potrzebne do pracy z zawartością bieżącego element moduł wyliczający.Na przykład podczas korzystania z numeratora Foreach plik skryptu musi wiedzieć, bieżącej nazwy pliku, używając numeratora Foreach ADO, skrypt musi wiedzieć, zawartość kolumn w bieżącym wierszu danych.
Zmienne umożliwiają to komunikację między kontener Foreach pętli i zadania skryptu.Na Zmienna mapowania stronaEdytor foreach pętli, zmienne przypisywać do każdego elementu danych, który jest zwracany przez pojedynczy element wyliczany.Na przykład numeratora plik Foreach zwraca tylko nazwę pliku na indeks 0 i wymaga tylko jedno mapowanie zmiennej, moduł wyliczający, która zwraca kilka kolumn danych w każdym wierszu wymaga do mapowania różnych zmiennej do każdej kolumna, która ma być używany do wykonywania zadania, skrypt.
Po elementów wyliczanych są mapowane do zmiennych, następnie należy dodać mapowane zmienne, które mają zostać ReadOnlyVariables Właściwość Skrypt stronaEdytor zadań skryptu , aby udostępnić je do skryptu.Aby zapoznać się z zadań skryptów w pętlę Foreach kontener, przetwarza pliki obrazów w folderze, zobacz Praca z obrazów z zadaniem skryptów.
Przykład zmiennych
Poniższy przykład ilustruje sposób dostępu do zmiennych w zadaniu skryptów do określenia ścieżka do pakiet przepływu pracy.Próbki zakłada się, użytkownik utworzył całkowitą zmiennych o nazwie CustomerCount i MaxRecordCount i dodać je do ReadOnlyVariables Kolekcja w Edytor zadań skryptu.The CustomerCount variable contains the number of customer records to be imported.Jeśli jego wartość jest większa niż wartość MaxRecordCount, zadanie skryptu zgłasza błąd. Gdy wystąpi awaria, ponieważ MaxRecordCount został przekroczony próg, ścieżka błąd przepływu pracy, może wprowadzić wszelkie wymagane oczyszczania.
Aby skompilować pomyślnie próbki, trzeba dodać odwołanie do wirtualny plik dziennika Microsoft.SqlServer.ScriptTask.
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;
}
}
}
|