我有一个运行执行SQL任务的SSIS包来获取行计数,将其存储在变量中,然后使用脚本任务读取该变量并检查它是否大于0。 / p>
我遇到的问题是,当我调试软件包时,它将变量读取为-1(我假设只是SQL说成功执行了查询),而不是38,000个行,即在DB中。 据我所知,一切都设置正确并以正确的方式编码,所以我不确定是什么原因造成的。
private byte[] emptyBytes = new byte[0];
public void Main()
{
int rowCount = Convert.ToInt32(Dts.Variables["User::SMART_rowcount"].Value.ToString());
if (rowCount > 0)
{
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
Dts.Log("The SMART Row Count Check has failed due to result set having no rows. Check table SMART.[SMART_SEC_MGMT_QUOTE_DATA].", (int)Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure, emptyBytes);
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
编辑:
以下是这些和变量的流程:
答案 0 :(得分:1)
在执行SQL任务的ResultSet
标签中,您不必在"结果名称"中添加列的名称。柱。您放置列的从零开始的索引。
所以没有" Smart_Count"在Result Name
下,你应该有" 0"。
答案 1 :(得分:1)
我不会为此使用脚本任务,而是在控制流上添加表达式。
@Smart_rowcount>主路径为0。 和 @ Smart_rount< 1在日志路径上。
答案 2 :(得分:1)
所以我已经正确设置了所有内容,并且我的流程没有任何问题。要解决此错误,我删除了执行SQL任务,使用所有完全相同的设置和所有内容重新创建它,现在它返回正确的结果。
“您是否尝试过将其关闭并重新打开?”