LineageID是字符串或整数

时间:2013-06-20 08:39:30

标签: sql-server-2008 ssis

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

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

我的许多论坛和文章都说SSIS包中生成的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);
            }
        }

通过使用Breakpoint调试“output.Attribute(”lineageId“)。值”返回值

“Package \ DFT \ SRC.Outputs [OLE DB Source Output] .Columns [TYPE]”

1 个答案:

答案 0 :(得分:0)

我进行了非常类似的练习,发现谱系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包引发的错误消息。

希望这有帮助!