我正在维护由前一名工作人员创建的BIDS集成服务项目。不幸的是,我对BIDS没有任何经验。
该过程从平面文件(一系列CSV)中获取信息并将其导入我们的数据库。提供数据的客户端最近已切换到提供Unicode数据,因此我需要更新集成项目以适应这种情况。当前BIDS数据流为每列返回验证错误,“无法在unicode和非unicode字符串数据类型之间进行转换。”
问题:看起来我可以通过更新平面文件连接管理器来实现这一点,但我有几百个需要更改的字段。有没有办法以编程方式执行此操作?手动更改所有这些列的设置将花费大量时间并且很乏味。
我尝试过的事情:
答案 0 :(得分:1)
您需要进行三次+更改:SSIS中有两个+,数据库中有一个。
SSIS将有一个Flat File Connection Manager,您需要将AnsiString类型的所有实例修改为String。
然后,任何具有引用修改后的平面文件连接管理器的平面文件源的Data Flow Tasks都需要更新以更正其元数据。
然后,可能需要调整SSIS包中的任何异步组件,因为它们可能无法获取元数据更改。
最后,您需要更新目标数据库表,以便从varchar数据类型转换为nvarchar。否则,SSIS将无法在目标上验证,而不是您现在遇到的源验证。
我已经通过编程界面对SSIS做了一些工作,我不会羡慕你面前的任务。当您可以使用脚本任务来检查SSIS包然后对其进行修改时,您最好能够制作专用的控制台/ winform应用程序来执行此操作。虽然它在SSIS或专用应用程序中是相同的调试器,但是如果不启动SSIS包然后打开脚本任务进行调试,则调试 - >更改 - >重新启动调试周期会更容易。
答案 1 :(得分:0)
答案 2 :(得分:0)
最简单的方法是完全没有程序化。 BIDS允许您查看和编辑项目底层的XML。
要查看或编辑此XML,请转到查看 - >代码。
由于我想用unicode友好的WSTR数据类型替换所有STR数据类型,我只是对XML进行了find-replace。我替换了dataType =" str" with dataType =" wstr"和codePage =" 65001"使用codePage =" 0"。