Praca z zmiennych programowo
Zmienne są sposobem dynamicznie zestaw wartości i procesów kontroli opakowań, kontenerów, zadania i obsługi zdarzeń.Zmienne można również przez ograniczenia pierwszeństwo kontrolować kierunek przepływu danych różnych zadań.Zmienne mają wiele zastosowań:
Aktualizacja właściwości pakiet przy uruchomieniu czas.
Wypełnić wartości parametrów dla instrukcji Transact-SQL przy uruchomieniu czas.
Sterowanie przepływem pętli Foreach.Aby uzyskać więcej informacji, zobacz Dodawanie wyliczania do przepływ sterowania.
Sterowanie ograniczenie pierwszeństwa przez jego stosowania w wyrażenie.ograniczenie pierwszeństwa może zawierać zmienne definicji ograniczenia.Aby uzyskać więcej informacji, zobacz Dodawanie wyrażenia pierwszeństwo ograniczeń.
Powtórz warunkowe formantu kontener dla pętli.Aby uzyskać więcej informacji, zobacz Dodawanie iteracji do przepływ sterowania.
Tworzenie wyrażeń, które zawierają wartości zmiennych.
Można tworzyć niestandardowe zmienne dla wszystkich typów kontener: pakiety, Pętli Foreach pojemniki, Pętli dla pojemniki, sekwencji pojemniki, TaskHosts, i zdarzenie obsługi.Aby uzyskać więcej informacji, zobacz Integracja usług zmiennych i Korzystanie ze zmiennych w opakowaniach.
Zakres
Każdy kontener ma swoją własną Variables kolekcja.Podczas tworzenia nowej zmiennej znajduje się w zakres z kontener nadrzędnego.Ponieważ kontener pakiet jest u góry hierarchii kontener, zmienne pakiet zakres funkcja takich jak zmienne globalne i są widoczne dla wszystkich kontenerów znajdujących się wewnątrz pakietu.Również możliwy zbiór zmiennych dla kontener przez dzieci kontenerze poprzez Variables kolekcja za pomocą zmiennej Nazwa lub indeks zmiennej kolekcja.
Ponieważ widoczność zmienna jest objęty zakresem od góry niedziałający, zmienne zadeklarowane poziom pakiet są widoczne dla wszystkich kontenerów w pakiecie.Dlatego Variables Kolekcja kontener zawiera wszystkie zmienne, które należą do obiektu nadrzędnego, oprócz własnych zmiennych
Odwrotnie zmienne, które są zawarte w zadania ograniczony zakres i widoczności i są widoczne tylko dla zadania.
Jeśli pakiet uruchomi inne pakiety, zmienne zdefiniowane w zakres pakietu wywołującego dostępne są nazywane pakietem.Jedyny wyjątek występuje wtedy, gdy zmienna o tej samej nazwie istnieje w nazwie pakiet.W przypadku wystąpienia kolizji to wartość zmiennej w pakiecie o nazwie zastępuje wartość z pakiet wywołującego.Zmienne zdefiniowane w zakres pakiet wywoływanego nigdy nie są dostępne do pakiet wywołującego.
Poniższy przykład kodu programowo tworzy zmienną, myCustomVar, w pakiecie zakres, a następnie iterację wszystkich zmiennych widoczne pakietu, drukowanie ich nazwę, typ danych i wartości.
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Application app = new Application();
// Load a sample package that contains a variable that sets the file name.
Package pkg = app.LoadPackage(
@"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
@"\Package Samples\CaptureDataLineage Sample\CaptureDataLineage\CaptureDataLineage.dtsx",
null);
Variables pkgVars = pkg.Variables;
Variable myVar = pkg.Variables.Add("myCustomVar", false, "User", "3");
foreach (Variable pkgVar in pkgVars)
{
Console.WriteLine("Variable: {0}, {1}, {2}", pkgVar.Name,
pkgVar.DataType, pkgVar.Value.ToString());
}
Console.Read();
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim app As Application = New Application()
' Load a sample package that contains a variable that sets the file name.
Dim pkg As Package = app.LoadPackage( _
"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _
"\Package Samples\CaptureDataLineage Sample\CaptureDataLineage\CaptureDataLineage.dtsx", _
Nothing)
Dim pkgVars As Variables = pkg.Variables
Dim myVar As Variable = pkg.Variables.Add("myCustomVar", False, "User", "3")
Dim pkgVar As Variable
For Each pkgVar In pkgVars
Console.WriteLine("Variable: {0}, {1}, {2}", pkgVar.Name, _
pkgVar.DataType, pkgVar.Value.ToString())
Next
Console.Read()
End Sub
End Module
Przykładowe dane wyjściowe:
Variable: CancelEvent, Int32, 0
Variable: CreationDate, DateTime, 4/18/2003 11:57:00 AM
Variable: CreatorComputerName, String,
Variable: CreatorName, String,
Variable: ExecutionInstanceGUID, String, {237AB5A4-7E59-4FC9-8D61-E8F20363DF25}
Variable: FileName, String, Junk
Variable: InteractiveMode, Boolean, False
Variable: LocaleID, Int32, 1033
Variable: MachineName, String, MYCOMPUTERNAME
Variable: myCustomVar, String, 3
Variable: OfflineMode, Boolean, False
Variable: PackageID, String, {F0D2E396-A6A5-42AE-9467-04CE946A810C}
Variable: PackageName, String, DTSPackage1
Variable: StartTime, DateTime, 1/28/2005 7:55:39 AM
Variable: UserName, String, <domain>\<userid>
Variable: VersionBuild, Int32, 198
Variable: VersionComments, String,
Variable: VersionGUID, String, {90E105B4-B4AF-4263-9CBD-C2050C2D6148}
Variable: VersionMajor, Int32, 1
Variable: VersionMinor, Int32, 0
Należy zauważyć, że wszystkie zmienne o zakresie w System nazw są dostępne do pakiet.Aby uzyskać więcej informacji, zobacz Zmienne systemowe.
Przestrzenie nazw
Microsoft SQL Server Integration Services (SSIS) provides two default namespaces where variables reside; User and System namespaces.Domyślnie wszystkie zmienna niestandardowa utworzone przez dewelopera jest dodawany do użytkownika obszaru nazw.Zmienne systemowe znajdują się w System obszaru nazw.Można utworzyć dodatkowe obszary nazw innych niż użytkownika obszaru nazw do przechowywania zmiennych niestandardowe, a można zmienić nazwę użytkownika nazw, ale nie można dodać lub zmodyfikować zmienne w System obszar nazw lub przypisać inny obszar nazw zmiennych systemowych.
Zmienne systemowe, które są dostępne różne w zależności od typu kontener.Lista dostępnych pakietów, pojemniki, zadania, zmienne systemowe i zdarzenie obsługi, zobacz Zmienne systemowe.
Wartość
Wartość zmienna niestandardowa może być literału lub wyrażenie:
Jeśli zmienna zawiera wartość literału zestaw wartość jego Value właściwość.
Jeśli tak, aby wyniki wyrażenia można używać jako jego wartość zmiennej ma zawierać wyrażenie, zestaw EvaluateAsExpression Właściwość zmiennej truei podaj wyrażenie w Expression Właściwości.Przy uruchomieniu czas, wyrażenie jest sprawdzane i wynikiem wyrażenia jest używana jako wartość zmiennej.Na przykład, jeśli właściwość wyrażenie zmiennej jest "100 * 2""100 * 2", zmienna ma wartość 200.
Zmiennej można jawnie zestaw wartość jego DataType.DataType Wartość wywnioskować z początkowa wartość przypisana do zmiennej i nie można zmienić później.Aby uzyskać więcej informacji o typach danych zmiennych, zobacz Typy danych usług integracji.
Poniższy kod ilustruje tworzenie nowych zestawów zmiennych, EvaluateAsExpression do true, przypisuje wyrażenie "100 * 2" do właściwość wyrażenia zmiennej, a następnie wyświetla wartość zmiennej.
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package pkg = new Package();
Variable v100 = pkg.Variables.Add("myVar", false, "", 1);
v100.EvaluateAsExpression = true;
v100.Expression = "100 * 2";
Console.WriteLine("Expression for myVar: {0}",
v100.Properties["Expression"].GetValue(v100));
Console.WriteLine("Value of myVar: {0}", v100.Value.ToString());
Console.Read();
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim pkg As Package = New Package
Dim v100 As Variable = pkg.Variables.Add("myVar", False, "", 1)
v100.EvaluateAsExpression = True
v100.Expression = "100 * 2"
Console.WriteLine("Expression for myVar: {0}", _
v100.Properties("Expression").GetValue(v100))
Console.WriteLine("Value of myVar: {0}", v100.Value.ToString)
Console.Read()
End Sub
End Module
Przykładowe dane wyjściowe:
Expression for myVar: 100 * 2
Value of myVar: 200
Wyrażenie musi być prawidłowe wyrażenie, które używa SSIS składni wyrażenia.Literały są dozwolone w wyrażeniach zmiennej, oprócz operatory i funkcje, które zapewnia składni wyrażenie, ale wyrażenie nie można odwoływać inne zmienne lub kolumn.Aby uzyskać więcej informacji, zobacz Odwołanie do wyrażeń w usługach Integration Services.
Pliki konfiguracyjne
Jeśli plik konfiguracyjny zawiera zmienną niestandardowe, można zaktualizować zmiennej przy uruchomieniu czas.Co to oznacza to, że po uruchomieniu tego pakiet, wartość zmiennej pierwotnie w pakiecie zostaje zastąpiony nową wartość z plik konfiguracja.Ta technika zastępowania jest przydatna, po wdrożeniu pakiet na wielu serwerach, które wymagają różnych wartości zmiennych.Zmienną można na przykład określić ile razy Pętli Foreach kontener powtarza przepływu pracy lub listę adresatów, obsługa zdarzeń wysyła do wiadomość e-mail spowodował błąd lub zmienić liczbę błędów występujących przed pakiet nie powiedzie się.Te zmienne dynamicznie znajdują się w konfiguracja plików dla każdego środowiska.Dlatego tylko zmienne, które są odczytu i zapisu są dozwolone w konfiguracja pliki.Aby uzyskać więcej informacji, zobacz Tworzenie konfiguracji pakietu.
|