基本问题
我是否缺少一种方法来评估 SSIS 中的表达式?
背景故事
我正在以编程方式修复大量软件包,以使它们符合我们的标准。以最简单的形式,假设我正在创建一个新变量并为其分配一个表达式。这工作正常。
如果我单击省略号,然后单击结果对话框窗口中的 Evaluate Expression,我会看到我的公式计算在语法上是正确的,并且在逻辑上它正在生成我期望的值。评估如何进行?
当我在上一步中单击“确定”时,请注意我的变量的更改.Value
。它现在填充了表达式的评估版本。我需要在我的代码中模拟相同的步骤,但我不知道它在 BIDS/SSDT 中是如何做到的。从概念上讲,这只是variable.Value = MAGIC;
我在巫师 101 中失败了。
为什么这是个问题
我正在执行的实际工作比这要复杂得多。我正在添加和配置几个任务以及处理数据流。其中一个步骤是添加一个执行 SQL 任务,该任务使用一个分配有表达式的变量(要平底船的表)将现有数据从表中删除。包的运行时似乎没有评估实际的表达式......导致我发现我的问题。
复制代码
/// <summary>
/// Create a simple package with a variable that has an expression to figure
/// out how to evaulate the resulting value.
/// </summary>
static void ExpressionPOC()
{
Microsoft.SqlServer.Dts.Runtime.Package p = new Microsoft.SqlServer.Dts.Runtime.Package();
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
p.Name = "ProofOfConcept";
Microsoft.SqlServer.Dts.Runtime.Variable v = null;
// This creates a simple variable of type string with an initial value of blank string
v = p.Variables.Add("ContrivedExample", false, "User", string.Empty);
v.Expression = @"""My package is named "" + @[System::PackageName]";
// Looking for something here to
//v.Value = v.Expression.EvaluatePrettyPlease();
app.SaveToXml(@"C:\Users\bfellows\Documents\Visual Studio 2012\Projects\Demo\Demo\testVariable.dtsx", p, null);
}