Språk
Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
SSIS Integration Runtime i Azure Data Factory
Variabler är ett sätt att dynamiskt sätta värden och styra processer i paket, containrar, uppgifter och händelsehanterare. Variabler kan också användas av företrädesbegränsningar för att styra riktningen på dataflödet till olika uppgifter. Variabler har en mängd olika användningsområden:
Uppdatera egenskaperna för ett paket vid körning.
Fyll i parametervärden för Transact-SQL satser vid körning.
Kontrollera flödet i en Foreach-loop. För mer information, se Lägg till uppräkning i ett kontrollflöde.
Kontrollera en prejudikationsbegränsning genom dess användning i ett uttryck. En prejudikationsbegränsning kan inkludera variabler i begränsningsdefinitionen. Mer information finns i Lägga till uttryck i Prioritetsbegränsningar.
Kontrollera den villkorliga upprepningen av en For Loop-container. För mer information, se Add Iteration to a Control Flow.
Bygg uttryck som inkluderar variabelvärden.
Du kan skapa egna variabler för alla containertyper: paket, Foreach Loop-containrar , For Loop-containrar , Sequence-containrar , TaskHosts och händelsehanterare. Mer information finns i SSIS-variabler (Integration Services) och Använda variabler i paket.
Scope
Varje behållare har sin egen Variables samling. När en ny variabel skapas ligger den inom ramen för dess föräldracontainer. Eftersom paketbehållaren ligger högst upp i containerhierarkin fungerar variabler med paketomfattning som globala variabler och är synliga för alla containrar inom paketet. Samlingen av variabler för behållaren kan också nås av barnen till behållaren genom samlingen Variables , genom att använda antingen variabelnamnet eller variabelns index i samlingen.
Eftersom synligheten för en variabel är begränsad uppifrån och ner, är variabler deklarerade på paketnivå synliga för alla containrar i paketet. Därför inkluderar samlingen Variables på en behållare alla variabler som tillhör dess förälder utöver dess egna variabler
Omvänt är variablerna som ingår i en uppgift begränsade i omfattning och synlighet, och är endast synliga för uppgiften.
Om ett paket kör andra paket är variablerna definierade i omfånget för det anropande paketet tillgängliga för det anropade paketet. Det enda undantaget uppstår när en variabel med samma namn finns i det anropade paketet. När denna kollision inträffar åsidosätter variabelvärdet i det anropade paketet värdet från det anropande paketet. Variabler definierade inom det anropade paketets omfattning är aldrig tillgängliga för det anropande paketet.
Följande kodexempel skapar programmässigt en variabel, myCustomVar, i paketets omfattning, och itererar sedan genom alla variabler som är synliga för paketet, och skriver ut deras namn, datatyp och värde.
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
Exempel på utdata:
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
Observera att alla variabler som ingår i Systemnamnrymden är tillgängliga för paketet. För mer information, se Systemvariabler.
Namespaces
Microsoft služba SSIS (SSIS) tillhandahåller två standardnamnrymder där variabler finns; Användar- och systemnamnrymder. Som standard läggs alla anpassade variabler skapade av utvecklaren till i användarnamnrymden. Systemvariabler finns i Systemnamnrymden. Du kan skapa ytterligare namnrymder utöver användarnamnrymden för att hålla egna variabler, och du kan ändra namnet på användarnamnrymden, men du kan inte lägga till eller ändra variabler i Systemnamnrymden eller tilldela systemvariabler till ett annat namnrymd.
De systemvariabler som finns tillgängliga skiljer sig beroende på behållaretypen. För en lista över systemvariabler som är tillgängliga för paket, containrar, uppgifter och händelsehanterare, se Systemvariabler.
Value
Värdet på en anpassad variabel kan vara en literal eller ett uttryck:
Om du vill att variabeln ska innehålla ett bokstavligt värde, sätt värdet på dess Value egenskap.
Om du vill att variabeln ska innehålla ett uttryck, så att du kan använda resultaten av uttrycket som dess värde, sätt egenskapen EvaluateAsExpression för variabeln till sann och ge ett uttryck i egenskapen Expression . Vid körning utvärderas uttrycket, och resultatet av uttrycket används som variabelns värde. Till exempel, om uttrycksegenskapen för en variabel är
"100 * 2""100 * 2", utvärderas variabeln till värdet 200.
För en variabel kan du inte explicit sätta värdet på dess DataType. Värdet DataType härleds från det initiala värdet som tilldelats variabeln och kan inte ändras efteråt. För mer information om variabeldatatyper, se Integration Services Data Types.
Följande kodexempel skapar en ny variabel, sätter EvaluateAsExpression till sann, tilldelar uttrycket "100 * 2" till variabelns uttrycksegenskap och ger sedan variabelns värde.
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
Exempel på utdata:
Expression for myVar: 100 * 2
Value of myVar: 200
Uttrycket måste vara ett giltigt uttryck som använder SSIS-uttryckssyntaxen. Literaler är tillåtna i variabeluttryck, utöver de operatorer och funktioner som uttryckssyntaxen tillhandahåller, men uttryck kan inte referera till andra variabler eller kolumner. Mer information finns i Uttryck för Integration Services (SSIS).
Konfigurationsfiler
Om en konfigurationsfil innehåller en anpassad variabel kan variabeln uppdateras vid körning. Detta innebär att när paketet körs ersätts värdet på variabeln som ursprungligen fanns i paketet med ett nytt värde från konfigurationsfilen. Denna ersättningsteknik är användbar när ett paket distribueras till flera servrar som kräver olika variabelvärden. Till exempel kan en variabel ange hur många gånger en Foreach Loop-container upprepar sitt arbetsflöde, eller lista mottagarna som en händelsehanterare skickar e-post till när ett fel uppstår, eller ändra antalet fel som kan uppstå innan paketet misslyckas. Dessa variabler tillhandahålls dynamiskt i konfigurationsfiler för varje miljö. Därför är endast variabler som är lästa/skrivna tillåtna i konfigurationsfiler. Mer information finns i Skapa paketkonfigurationer.