【问题标题】:SSIS: Add Creation Date to Variable in Script TaskSSIS:将创建日期添加到脚本任务中的变量
【发布时间】:2020-12-09 22:19:53
【问题描述】:

我正在尝试使用脚本任务在 SSIS 中获取文件的创建日期。我创建了一个名为“User::File_Created”的变量并将该变量添加到以下脚本任务中:

        public void Main()
        {
            string fileName = @"[FilePath]";
            FileInfo fi = new FileInfo(fileName);

            if (Dts.Variables.Contains("User::File_Created") == true)
            {
                Dts.Variables["User::File_Created"].Value = fi.CreationTime;
            }
        }

虽然完成后,我仍然只能看到存储在变量中的当前日期。任何帮助将不胜感激。

【问题讨论】:

  • 如果在 if 块之后将bool fireAgain = false; string message = "{0}::{1} : {2}"; foreach (var item in Dts.Variables) { Dts.Events.FireInformation(0, "SCR Echo Back", string.Format(message, item.Namespace, item.Name, item.Value), string.Empty, 0, ref fireAgain); } 添加到脚本任务中,您是否看到 File_Created 中的预期值?所有这些都将得到浓缩,引用的代码也是billfellows.blogspot.com/2016/04/…
  • @billinkc 是的!这很有帮助。该调试工具确实向我显示该变量正在评估为预期日期。但是,完成后,我仍然看不到写入变量值字段的正确日期。有什么想法吗?

标签: c# ssis etl


【解决方案1】:

这是一个常见的混淆点。

“变量”窗口是您创建 SSIS 变量和分配设计时值的地方。设计时间值就是这样,仅用于设计。包将使用这些值进行初始化,但它们可以在执行期间更改。当包终止时,它不会将当前值保存回包,因为那都是运行时的。设计时间保持不变。

要查看运行时值,您需要拉起 Locals 窗口,展开 Variables 集合节点,然后您可以看到所有当前值(或为其设置监视)。在这里你可以看到我的包正在运行,因为我们有绿色节点(将我的变量的值设置为 ZYX 的表达式任务)并且变量窗口显示 ABC 但局部窗口反映了 ZYX 的真实值

要在调试包时访问“本地”窗口,请单击“调试”菜单,在“Windows”下选择“本地”。 https://docs.microsoft.com/en-us/visualstudio/debugger/autos-and-locals-windows?view=vs-2019

【讨论】:

  • 感谢您的帮助,无论出于何种原因,这对我来说并不明显。一旦我附加了所有内容并尝试在整个工作流程中使用该变量,它就会按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多