【问题标题】:LineageID is string or IntegerLineageID 是字符串或整数
【发布时间】:2013-06-20 08:39:30
【问题描述】:

我正在尝试获取 SSIS 包中输出列的 lineageId。我在 C# 代码中将 SSIS 包作为 XML 文档进行遍历。

从包中的节点遍历和获取数据没有问题,但在我尝试获取 LineageID 时遇到问题。

我在许多论坛和文章中说 SSIS 包中生成的 LineageId 是该特定包的唯一整数值​​,因此我正在尝试将 LineageID 转换为整数值。但它似乎是一个字符串值。

请澄清我的疑问。 lineageid 是 STRING 还是 INT?

如果是 Int,请告诉我如何找到它。

foreach (var x in NodeCollection)
        {
    var outputCollection = x.Elements("outputColumn");
            foreach (var output in outputCollection)
            {
                string Name = output.Attribute("name").Value;
                long LineageId = Convert.ToInt64(output.Attribute("lineageId").Value);
            }
        }

通过断点调试“output.Attribute("lineageId").Value”正在返回以下值

"Package\DFT\SRC.Outputs[OLE DB 源输出].Columns[TYPE]"

【问题讨论】:

    标签: sql-server-2008 ssis


    【解决方案1】:

    我进行了一个非常相似的练习,发现血统 id 值绝对是整数。这是我的代码的摘录:

    var nsmgr = new XmlNamespaceManager(doc.NameTable);
    nsmgr.AddNamespace("DTS", "www.microsoft.com/SqlServer/Dts");
    foreach (XmlNode childnode in doc.SelectNodes("//*[@lineageId != '' and @name != '']"))
        {
            XmlNode ExecutableNode = childnode.SelectSingleNode("ancestor::DTS:Executable[1]", nsmgr);
            var taskName = ExecutableNode.SelectSingleNode("DTS:Property[@DTS:Name='ObjectName']", nsmgr).InnerText;
            var targetColumnName = childnode.Attributes["name"].Value;
            var lineageID = Convert.ToInt32(childnode.Attributes["lineageId"].Value);
    

    我们使用它来将列名映射到 lineageid,以便我们可以解释 SSIS 包抛出的错误消息。

    希望这会有所帮助!

    【讨论】:

    • 如果不是太麻烦,你能上传一个包含你的代码的示例 pkg 吗?我正在尝试实现这是 SSIS,但我不断收到“输入字符串的格式不正确”。错误,就像 OP 一样,我也得到 LineageID 字段的字符串值...我无法在 SSIS 2012 中获取错误列名称... Thx
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 2020-09-25
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多