SSIS包将数据加载到Azure数据仓库中时出错

时间:2019-04-08 05:30:11

标签: sql sql-server azure ssis azure-sql-data-warehouse

我们有一些sis软件包,可将数据从CSV文件加载到Azure数据仓库中。包中的所有数据流任务都配置为并行处理。 最近,软件包启动失败,并出现以下错误。

  

无法从Blob存储复制到SQL数据仓库。 110802;内部DMS错误发生,导致此操作失败。详细信息:异常:System.NullReferenceException,消息:对象引用未设置为对象的实例。

当我们手动运行程序包(分别运行每一个dft)时,它运行良好。当我们按原样手动运行程序包(使用并行处理)时,也会发生相同的错误。

这里的任何人都可以帮助找到此问题的根本原因吗?

2 个答案:

答案 0 :(得分:1)

我相信,如果多个作业试图同时完全访问同一文件,则可能会出现此问题。 您可能需要检查一个CSV文件是否来自多个SSIS软件包,如果是,则可能需要更改方法。 当一个程序包试图读取一个CSV文件时,它将锁定该文件,以便其他作业无法修改该文件。 要解决此问题,您可以对那些使用与源相同CSV的任务使用顺序DFT,并保持其他DFT的并行。

答案 1 :(得分:0)

恕我直言,使用SSIS数据流在Azure SQL数据仓库中插入数据是错误的。早期的驱动程序存在一些问题,这些问题使性能大大降低,即使现在已经解决了这些问题,将数据导入Azure SQL数据仓库的最佳方法是Polybase。将您的csv文件放入blob存储区或Data Lake中,然后使用Polybase和外部表引用这些文件。然后可以选择使用CTAS将数据导入内部表,例如伪代码

csv -> blob store -> polybase -> external table -> CTAS to internal table

如果必须使用SSIS,请考虑以更多的ELT类型方法仅使用执行SQL任务,或者使用Azure SQL DW Upload Task,它是适用于SSIS的Azure功能包的一部分,{{3} }。

仔细阅读本教程,以更深入地了解这种方法:

here