我在SSIS中为我的一个示例表请求Column Null Ratio Profile request
用于测试目的,我得到了XML格式的Inclusion Report
没有任何问题,但我怎样才能利用<NullCount>
来自每个选定列的报告?或者我如何提取所请求的所有列的空填充信息?
以下是从任务生成的XML报告的一部分:
<Profiles>
<ColumnNullRatioProfile ProfileRequestID="NullRatioReq" IsExact="true">
<DataSourceID>{AD39E650-3865-4703-89AB-B9D8D7A83CB3}</DataSourceID>
<Table DataSource="njpp-dm02" Database="Reporting" Schema="dbo" Table="Error" RowCount="6" />
<Column Name="Error" SqlDbType="VarChar" MaxLength="-1" Precision="255" Scale="255" LCID="1033" CodePage="0" IsNullable="true" StringCompareOptions="0" />
<NullCount>0</NullCount>
</ColumnNullRatioProfile>
<ColumnNullRatioProfile ProfileRequestID="NullRatioReq" IsExact="true">
<DataSourceID>{AD39E650-3865-4703-89AB-B9D8D7A83CB3}</DataSourceID>
<Table DataSource="njpp-dm02" Database="Reporting" Schema="dbo" Table="Error" RowCount="6" />
<Column Name="Runtime" SqlDbType="DateTime" MaxLength="0" Precision="255" Scale="255" LCID="-1" CodePage="0" IsNullable="true" StringCompareOptions="0" />
<NullCount>0</NullCount>
</ColumnNullRatioProfile>
</Profiles>
从上面的XML代码中,正如您在<Column Name = "Error"...>
中看到的那样,我相信<NullCount>
后跟它是我需要提取的值(并且它是正确的结果)。
我尝试使用下面的C#代码来处理该XML报告,但它在没有任何有用信息的情况下抛出错误,我不确定我是否有多列,如何获取或者显示每对的正确方法是什么结果。
C#代码:
//code before
using System.XML;
//code after
public void Main()
{
String InclusionRpt = Dts.Variables["User::InclusionRpt"].Value.ToString();
XmlDocument xml = new XmlDocument();
xml.LoadXml(InclusionRpt);
XmlNodeList nodelist = xml.GetElementsByTagName("NullCount");
int i = 0;
for (i = 0; i <= 1; i++)
{
if (i == 0)
{
MessageBox.Show("The total number of Null found in \"Error\" is " + nodelist[i].InnerText);
}
if (i == 1)
{
MessageBox.Show("The total number of Null found in \"RunTime\" is " + nodelist[i].InnerText);
}
}
}
Dts.TaskResult = (int)ScriptResults.Success;
}
再次,简而言之,我怎样才能显示这两列的空数(错误和运行时)?谢谢:))
答案 0 :(得分:1)
根据MSDN documentation中的示例,您现有的代码与它们提供的示例代码只有一些不同之处:
xml.LoadXml(InclusionRpt);
- MSDN示例使用.Load()
代替.LoadXml
。我还质疑命名变量xml
是否会成为一个问题,因为它是一个保留字。
nodelist[i].InnerText
- MSDN使用.InnerXml
代替.InnerText
。我不认为这应该是一个问题,但它与MSDN代码示例不同。
由于您与示例代码的差异很小,我怀疑您尝试加载的文档很可能根本不加载,或者该文档的内容不是很重要你说的是什么。
如果您不能使用调试器,我会尝试使用MessageBox或其他一些编程方法在加载后显示xml
的内容。