C# SSIS变量超出范围
我有一个文件要与使用SSIS项目的数据库中的条目进行比较 在我的ControlFlow中,我有“执行SQL任务”,它从数据库中获取一个结果列表,我想在“脚本任务”中与之进行比较。这里还有其他一些我不知道的事情,但在我完成“脚本任务”之前还有for循环 我第一次运行它时,它工作正常,但一旦它尝试文件中的第二个条目,它就会丢失数据库结果。我可以通过在PreExecute中填充数据库结果来解决这个问题 私有数据表dt=新数据表; 公共覆盖无效预执行 { 基部。预执行; OleDbDataAdapter=新OleDbDataAdapter; //将数据库中的结果填充到DataTable对象中 adapter.Filldt,this.Variables.AccountFilterVariables; } 但是现在每次它进入ControlFlow中的循环时,我都会丢失保存在这个.Variables.AccountFilterVariables中的结果 我可以通过将“执行SQL任务”放入循环来解决这个问题,但我不希望它每次都查询数据库。我只想查询数据库一次,并在项目生命周期内保留this.Variables.AccountFilterVariables 我该怎么做?我猜这与PostExecute有关,但我不确定是什么C# SSIS变量超出范围,c#,ssis,C#,Ssis,我有一个文件要与使用SSIS项目的数据库中的条目进行比较 在我的ControlFlow中,我有“执行SQL任务”,它从数据库中获取一个结果列表,我想在“脚本任务”中与之进行比较。这里还有其他一些我不知道的事情,但在我完成“脚本任务”之前还有for循环 我第一次运行它时,它工作正常,但一旦它尝试文件中的第二个条目,它就会丢失数据库结果。我可以通过在PreExecute中填充数据库结果来解决这个问题 私有数据表dt=新数据表; 公共覆盖无效预执行 { 基部。预执行; OleDbDataAdapter
如果我没记错的话,executesql任务创建的记录集是游标类型的,这意味着您只能读取它一次 一个简单的解决方法是在执行SQL任务之后立即添加脚本任务。在该脚本任务中,加载带有记录集的DataTable,并将该DataTable存储在另一个包范围变量中。然后,在各种循环中,脚本组件可以引用DataTable,默认情况下,DataTable允许向前和向后搜索
有关示例代码,请参见我对的回答。您能弹出一个涉及的控制流和数据流的屏幕截图吗?我想我知道你在做什么,但是一张照片会使我更加坚定。我似乎需要更高的声誉来上传照片,但这里有一个到我的ControlFlow数据流的链接