运行第一条语句会为空表生成 1 的结果。
SSIS 中整数的默认值为 0。
这会让我相信您没有正确分配执行 SQL 任务的结果。
在Script Task 中插入以通过信息事件打印值
public void Main()
{
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);
}
Dts.TaskResult = (int)ScriptResults.Success;
}
或者在第二个Execute SQL Task上设置断点来识别变量的当前值。
如果值设置正确,那么唯一剩下的故障点是第二个执行 SQL 任务,这意味着您没有映射变量。
由于您的代码示例使用问号 ? 作为占位符,因此连接管理器是 OLEDB(我们有一个基于零的序数系统)还是 ODBC(我们有一个基于一个的序数)的问题就变成了一个问题。
如果问题出现在第一步,那么请确保您使用了正确的 0/1 值作为结果列的“名称”