我是SSIS的新手,如果这是一个重复的帖子,或者只是一个愚蠢的问题,请提前道歉。
我正在尝试在SSIS中创建以下过程:
1- [SQL Execute Task] Create Table in SQL DB
2- [Data Flow Task] Load Data from a source file (.xls) into the Created SQL table
3- [SQL Execute Task] Run Code on Created SQL table
4- [SQL Execute Task] Drop the SQL table that was created
我遇到的问题是当我设置我的OLE DB目标时,它想要一个已经创建的表。我试图创建表然后运行该过程,它第一次工作,但第二次表示该表不存在的错误,即使它正在跳过创建表的第1步。
关于解决方案的任何想法,还是我错过了一些非常明显的东西?
提前致谢!
答案 0 :(得分:3)
首先,为什么每次都放弃桌子?您的软件包将需要表的一致元数据,那么为什么不截断它并将其保存以用于下一次加载?对于SSIS包,这是一种非常糟糕的方法。
它失败的原因是因为SSIS同时对所有组件进行了设计时和运行时验证,所以它看到的只是表中不存在的表。
但是如果你的心脏设置在这种方法上,则需要将目标组件的ValidateExternalMetadata属性设置为false。只要组件上的外部列与CREATE TABLE语句生成的实际列匹配,就可以了。