我有一个在SQL Server 2008 R2上按计划运行的SSIS作业。该作业采用多个以逗号分隔的文本文件,并将它们导入SQL表。我大约4年前创建了这个SSIS包,我定期更新它没有问题。我最近不得不对一个数据流任务进行微小的更改。这在我的机器上工作正常,但是当我把这个工作放在服务器上时,它就出错了。仔细观察,它出错的原因是它试图放入SQL表中的值都包含在值周围的引号。这会导致非字符串值(如整数类型)出错,或者只是在字符串字段中加上引号。
我的源文本文件包含一些值周围的引号。以下是两个示例行:
“536518 * 1”, “A120”, “B002209A12”, “AA”,01-16-14,3,0.000,1555.50, “0”,0, “UA”,13年12月17日,” ”, “KS”, “A”, “04”, “1”, “MNS”, “AM”
“540039 * 1”, “G040”, “YPCILANHA / S224”, “Y”,01-16-14,2,0.080,905.28, “0”,0, “SM”,14年1月16日, “”, “”, “A”, “02”, “1”, “MNA”, “AM”
因此,在我的平面文件连接管理器上,我将“文本限定符”设置为引号,如下所示:
真正奇怪的是,有问题的数据流任务不是我修改的那个。我没有以任何方式更改SQL表定义。最后,我在DFT中添加了派生列以手动去除引号。例如:
REPLACE([Column 0],"\"","")
由于必须对每一行进行此操作,所以我不得不这18次,这非常烦人。
另一个非常奇怪的症状是我的笔记本电脑可以正常工作。如果我在笔记本电脑上运行我的SSIS作业并更新生产服务器上的相同表格,它可以正常工作(没有引号)。只有当作业通过计划的SQL作业自动运行时才会出现此问题。
我会非常感谢任何人可能提出的任何建议。
谢谢!
答案 0 :(得分:0)
在包级别使用ForEach循环容器。在任务级别使用派生列转换。