Ssis 数据源在拖放后保留架构

Ssis 数据源在拖放后保留架构,ssis,Ssis,我有几个几乎一模一样的包裹。仅在不同数据库版本中添加/删除的列不同。复制包并修改副本的数据流时,会删除OLE DB数据源并添加一个新数据源。一旦定义了新的,它的预览就会显示出我所期望的。但是,列来自已删除的OLE DB源。就好像它被缓存在某个地方 似乎我需要关闭包并在删除数据源后重新打开它。是否有其他方法清除此缓存状态?导致这种情况发生的内在原因是什么 更多。。。看起来是参数化的连接管理器一直保留着以前的参数,直到包关闭并重新打开。如果我了解您的工作流程,您就是在复制和粘贴包,然后在数据流中调整

我有几个几乎一模一样的包裹。仅在不同数据库版本中添加/删除的列不同。复制包并修改副本的数据流时,会删除OLE DB数据源并添加一个新数据源。一旦定义了新的,它的预览就会显示出我所期望的。但是,列来自已删除的OLE DB源。就好像它被缓存在某个地方

似乎我需要关闭包并在删除数据源后重新打开它。是否有其他方法清除此缓存状态?导致这种情况发生的内在原因是什么


更多。。。看起来是参数化的连接管理器一直保留着以前的参数,直到包关闭并重新打开。

如果我了解您的工作流程,您就是在复制和粘贴包,然后在数据流中调整源定义。挑战在于一个系统中的CustomerID是varchar(7),而另一个系统中的CustomerID定义为varchar(12)。“诀窍”是让设计引擎识别元数据更改并相应地进行操作

我通常的做法是彻底改变来源。我发现,使用查询
选择1,因为foo
会起作用。完成此操作后,OLE DB源组件的元数据将删除对现有列的所有引用,这些列将渗透到下游组件。然后我切换回正确的源代码,双击第一个红色的X,让它将ID从旧映射到新

如果您想要一个比内战手术更多的脑部手术路线,请更改源代码中任何本应注册元数据更改的列名。因此,
从dbo.MyTable中选择T.MyColumn,T.IsFine作为T
变为
从dbo.MyTable中选择T.MyColumnX,T.IsFine作为T
现在整个数据流中只有第一列被kiboshed。将其重置为“右”列名,一切正常

在内部,我不知道,但这从未阻止我猜测。验证启动后,SSIS引擎会识别出数据类型仍然兼容,因此不会更改现有元数据。一个不再存在的列足以让它坐起来并引起注意,因此缓存的大小就消失了


有些人喜欢尝试使用高级属性来更改大小,但我发现,仅使用上述方法比仅在设计师拍拍我的手并拒绝我建议的更改时更改大小更成功。

它实际上显示的列不在当前表中,但存在于原始表中。令人迷惑的是预览显示了正确的模式。我喜欢这个解决方案。简单有效。