1

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

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

当我们手动运行包(单独运行每个 dft)时,它运行良好。当我们按原样手动运行包时(使用并行处理),会发生同样的错误。

请在这里的任何人帮助找到此问题的根本原因?

4

2 回答 2

1

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

于 2019-04-13T13:37:34.970 回答
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 上传任务,它是 Azure 功能包的一部分,可从此处获得。

通读本教程以更深入地了解这种方法:

https://docs.microsoft.com/en-us/azure/sql-data-warehouse/design-elt-data-loading

于 2019-04-14T14:02:01.327 回答