【发布时间】:2016-05-19 12:59:43
【问题描述】:
我对记录集和脚本组件有一个奇怪的问题,所以我将解释一下情况。
在我的第一步中,我有一个数据流任务,我从 SQL 读取一个表并将结果存储在 Recordset Destination 中,并将此 Recordset 保存在一个变量中。
在我的第二步中,我有一个包含此组件的数据流任务:
- a - 我使用 File Flat Source 加载一个 .csv 文件
- b - 我使用脚本组件修改数据
- c - 我使用 OLE DB 目标将数据保存在 SQL 中
在步骤 b 中,我为每一行生成一个事件,并使用脚本任务在广告 EventHandler 中捕获此事件 此脚本任务中出现问题。这是代码:
public void Main()
{
...
string messaggio = GetMessaggio(connection, EventNumber);
...
}
private string GetMessaggio(string eventNumber)
{
using (var adapt = new OleDbDataAdapter())
using (var dt = new DataTable())
{
adapt.Fill(dt, Dts.Variables["User::RS_EventType"].Value);
return dt.AsEnumerable()
.Where(r => r.Field<int>("ev_number").ToString() == eventNumber)
.Select(r => r.Field<string>("ev_message"))
.FirstOrDefault() ?? "ND";
}
}
第一次,数据表加载了正确的记录,但这只是第一次发生。 再次调用方法时, Dts.Variables["User::RS_EventType"].Value 似乎仍然有效,但 adapt.Fill 不填充数据表。
可能是什么问题?
【问题讨论】:
-
您是否尝试过在语句块末尾执行 dt.Close() 以指示数据写入结束,以便下一条记录将具有新的 dt 实例
-
dt.Close()?这个方法在哪里??
标签: c# sql-server ssis ssis-2012