ADO NET目标中的可用目标列中缺少新添加的列

时间:2014-07-14 21:17:04

标签: visual-studio visual-studio-2008 ssis

我需要在ETL过程中添加一列。成功完成所有步骤,除了最后一步 - ADO NET Destination("插入规范"左侧的元素)。

SSIS conditional split

新列在Conditional Split中显示正常,作为源列和目标列。

ADO NET Destination("插入规范")中,新列仅显示在" Available Input Columns"的左侧。并且它在右边缺失(" Available Destination Columns")。

ADO NET Destination mappings

我确定我的新列出现在目标表中。我错过了一步吗?


更新
有趣的是,当我将鼠标悬停在ADO NET Destination元素上时,我收到此警告:

外部数据库表中添加了名为sold_price的新列。如果需要,使用高级编辑器刷新可用的目标列。

ADO NET Destination - new column added

6 个答案:

答案 0 :(得分:11)

上面的观点适用于“修改”。

但是说明要求“高级编辑器”。

SSIS advanced editor in Visual Studio

高级编辑器底部有一个“刷新”按钮。单击此按钮可将新列添加到“可用目标列”框中。

SSIS advanced editor view in Visual Studio

答案 1 :(得分:1)

我发现这种情况偶尔发生在其他转变中。我必须始终如一地修复它的唯一方法是删除数据流连接器并重新连接它们,因为有时它们似乎无法在SSIS 2008中刷新。

答案 2 :(得分:1)

这适用于SSIS 2013:在目标编辑器中,有按钮"新..."在"表格或视图的名称旁边"。按下它,在代码中编辑表名,按OK。这将删除当前目标表并创建新目标表,其中包含您可以立即映射的更新列。请注意,因为这将丢弃您当前的目标表。

答案 3 :(得分:1)

我的 ssis 包中几乎没有使用“Union All”组件,这就是新列丢失的地方。我不得不更新它并在联合中包含新的列,然后它就起作用了。

答案 4 :(得分:0)

可接受的答案有效,但会导致所有“输入列”映射重置(至少对我来说,我正在使用Visual Studio 2017)。通过进入“输入和输出属性”选项卡,展开“ ADO NET目标输入”,选择“外部列”,然后单击“添加列”按钮,可以添加新列。现在,新字段在“列映射”选项卡的“目标列”中变为可用。

Input and Output Properties tab

答案 5 :(得分:0)

Visual Studio 2015和“用于SQL Server的Microsoft OLE DB Povider”存在相同的问题(对于“ SQL Server Native Client 11.0”,我没有此问题)

有时数据流任务无法识别更改。 在源或目标中添加/删除列将被忽略。

例如,删除和创建具有不同列的表将被忽略,只会使运行验证失败。

关闭并重新打开Visual Studio是问题最少的解决方案。