Udostępnij za pośrednictwem


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ń:

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.

Ikona usług Integration Services (mała)Bieżąco z usług integracji

Najnowsze pliki do pobrania, artykuły, próbki i wideo firmy Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.