Udostępnij za pośrednictwem


Working with Variables Programmatically

Zmienne są sposobem dynamicznie do ustawiania wartości i kontrolowanie procesów w pakiety, pojemniki, zadań, a zdarzenie obsługi.Zmienne mogą być używane przez ograniczenia pierwszeństwo do kontrolowania kierunek przepływu danych do różnych zadań.Zmienne mają wiele zastosowań:

  • Aktualizacja właściwości pakiet przy uruchomieniu czas.

  • Wypełnić wartości parametrów dla instrukcji języka Transact-SQL przy uruchomieniu czas.

  • Sterowanie przepływem pętli Foreach.Aby uzyskać więcej informacji zobaczDodawanie wyliczania do przepływ sterowania.

  • ograniczenie pierwszeństwa kontroli przez jej użycie w wyrażeniu.ograniczenie pierwszeństwa może zawierać zmienne w definicji ograniczenia.Aby uzyskać więcej informacji zobaczAdding Expressions to Precedence Constraints.

  • Sterowanie warunkowego repeat kontener pętli for.Aby uzyskać więcej informacji zobaczDodawanie iteracji do przepływ sterowania.

  • Konstruowanie wyrażeń, które zawierają wartości zmiennych.

  • Można tworzyć niestandardowe zmienne dla wszystkich typów kontener: pakiety, Pętla foreach pojemnikówW pętli pojemnikówSekwencja pojemniki, TaskHosts, i zdarzenie obsługi.Aby uzyskać więcej informacji zobacz Integration Services Variables i Za pomocą zmiennych w pakietach.

Zakres

Każdy pojemnik ma swój własny Variables Kolekcja. Podczas tworzenia nowej zmiennej znajduje się w zakres jego kontener nadrzędnego.Ponieważ kontener pakiet znajduje się na najwyższym poziomie w hierarchii kontener, zmiennych za pomocą pakiet zakres funkcja takich jak zmienne globalne i są widoczne dla wszystkich kontenerów znajdujących się wewnątrz pakiet.Kolekcję zmiennych dla kontener są dostępne także przez obiektów podrzędnych kontener za pośrednictwem Variables Kolekcja za pomocą zmiennej Nazwa lub indeks zmiennej w kolekcji.

Ponieważ widoczność zmiennej jest objęty zakresem, od góry niedziałający, zmienne zadeklarowane poziom pakiet są widoczne dla wszystkich pojemników w pakiecie.Dlatego też Variables Kolekcja kontener zawiera wszystkie zmienne, które należą do swojej witryny nadrzędnej, oprócz swoje własne zmienne

I odwrotnie zmienne, które są zawarte w zadaniu jest ograniczony zakres i widoczność i są widoczne tylko dla zadania.

Jeśli pakiet uruchomi inne pakiety, zmienne zdefiniowane w zakres wywołującego pakietu są dostępne dla wywoływanego pakietu.Jedyny wyjątek występuje wtedy, gdy w pakiet o nazwie istnieje zmienna o tej samej nazwie.W przypadku wystąpienia tego konfliktu wartości zmiennej o nazwie pakiet zastępuje wartość z pakietu wywołującego.Zmienne zdefiniowane w zakres pakiet wywoływanego nigdy nie są dostępne do pakiet wywołującego.

W poniższym przykładzie kodu programowo tworzy zmienną, myCustomVar, w zakresie pakiet, a następnie dokonuje iteracji wszystkich widocznych dla pakietu, drukowanie ich nazwę, typ danych i wartości zmiennych.

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:

Zmienna: AnulujZdarzenie, Int32, 0

Zmienna: AM CreationDate DateTime, 11:57:00 18-4-2003

Zmienna: CreatorComputerName, ciąg,

Zmienna: Nazwa_twórcy, ciąg,

Zmienna: ExecutionInstanceGUID, ciąg, {FC 237AB5A4-7E59-4 9 - 8 D 61-E8F20363DF25}

Zmienna: Nazwa pliku, ciąg, wiadomości-śmieci

Zmienna: InteractiveMode, logiczny, FALSE

Zmienna: 1033 Identyfikator_ustawień_regionalnych Int32,

Zmienna: MYCOMPUTERNAME NazwaKomputera, ciąg,

Zmienna: myCustomVar, ciąg, 3

Zmienna: OfflineMode, logiczny, FALSE

Zmienna: PackageID, ciąg, {F0D2E396-A6A5-42AE-9467-04CE946A810C}

Zmienna: DTSPackage1 PackageName, ciąg,

Zmienna: AM StartTime DateTime, 7:55:39 28-1 marca 2005

Zmienna: Nazwa użytkownika, ciąg, < domena > \ identyfikatora użytkownika < >

Zmienna: VersionBuild, Int32, 198

Zmienna: VersionComments, ciąg,

Zmienna: {90E105B4-B4AF-4263-9CBD-C2050C2D6148} VersionGUID, ciąg,

Zmienna: VersionMajor, Int32, 1

Zmienna: 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 zobaczZmienne systemowe.

Obszary nazw

Microsoft SQL Server Integration Services (SSIS) zawiera dwa obszary nazw domyślne zmienne przechowywane; Użytkownik and System obszarów nazw.Domyślnie każdy zmienna niestandardowa utworzone przez projektanta jest dodawany do Użytkownik obszar nazw.Zmienne systemowe znajdują się w System obszar nazw.Można utworzyć dodatkowe obszary nazw innych niż Użytkownik obszaru nazw do przechowywania zmiennych niestandardowe, a można zmienić nazwę Użytkownik obszaru nazw, ale nie można dodać lub modyfikować zmienne w System obszaru nazw lub zmienne systemu przypisz do innego obszaru nazw.

Zmienne systemowe, które są dostępne różne w zależności od typu kontener.Aby wyświetlić listę dostępnych pakietów zmienne systemowe pojemniki, zadania i programy obsługi zdarzeń, zobacz Zmienne systemowe.

Wartość

Wartość zmiennej niestandardowy może być literał, lub wyrażenie:

  • Jeśli zmienna zawiera wartość literału zestaw wartość jego Value() Właściwość.

  • Jeśli zmienna ma zawierać wyrażenie, tak, aby wyniki wyrażenia można używać jako jego wartość zestaw EvaluateAsExpression() Właściwość zmiennej trueoraz wyrażenia w Expression() Właściwość. Przy uruchomieniu czas wyrażenie jest oceniane, a wynikiem wyrażenia jest używana jako wartość zmiennej.Na przykład, jeśli właściwość wyrażenie zmiennej "100 * 2""100 * 2", zmienna ma wartość 200.

Dla zmiennej, nie można jawnie ustawić wartość jego DataType(). The DataType() value is inferred from the initial value assigned to the variable, and cannot be changed afterward.Aby uzyskać więcej informacji na temat typów zmiennych zobacz Typy danych usług integracja.

W poniższym przykładzie kodu tworzenie nowych zestawów zmiennych, EvaluateAsExpression() Aby true, przypisuje wyrażenie "100 * 2" 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:

Wyrażenie dla zmienna: 100 * 2

Wartość zmienna: 200

Wyrażenie musi być prawidłowe wyrażenie, które używa SSIS Składnia wyrażeń. Literały są dozwolone w wyrażeniach zmiennej, operatory i funkcje, które zawiera składni wyrażenie, lecz wyrażenie nie mogą odwoływać się do innych zmiennych lub kolumn.Aby uzyskać więcej informacji zobaczIntegracja usług wyrażenie odwołania.

Pliki konfiguracja

Jeśli plik konfiguracyjny zawiera zmienna niestandardowa, zmienna mogą być aktualizowane przy uruchomieniu czas.Co to oznacza to, że po uruchomieniu tego pakiet, wartość zmiennej pierwotnie w pakiecie zostanie zastąpiona nową wartość z pliku konfiguracja.Ta technika zastępowania jest użyteczne, gdy pakiet jest wdrażana na wielu serwerach, które wymagają różnych wartości zmiennych.Na przykład zmienna może określić ile razy Pętla foreach kontener powtarza się jej przepływu pracy, lista adresatów którzy obsługi zdarzenie wysyła wiadomości e-mail, gdy błąd lub zmienić liczbę błędów, które mogą wystąpić, zanim pakiet nie powiedzie się.Zmienne te znajdują się dynamicznie w konfiguracja pliki dla poszczególnych środowisk.Dlatego mogą tylko zmienne, które są w trybie do odczytu/zapisu w plikach konfiguracyjnych.Aby uzyskać więcej informacji zobaczCreating Package Configurations.

Integration Services icon (small) Konfiguracja w aktualizacji z usług integracja Services pobytu

Najnowsze pliki do pobrania, artykuły, próbki, i pliki wideo firmy Microsoft, jak również wybranego rozwiązania od Wspólnoty, odwiedź witrynę Integration Services strona w witrynie MSDN lub TechNet:

Automatycznego powiadomienie tych aktualizacji należy subskrybować źródła danych RSS, które jest dostępne strona.