【问题标题】:ADF Onprem SQL Server to ADW Table copy issueADF Onprem SQL Server 到 ADW 表复制问题
【发布时间】:2018-07-16 14:25:28
【问题描述】:

在将给定的 prem 表复制到 ADW 时出现错误,我检查了数据类型和所有内容,这里看起来一切正常,但我不知道这里发生了什么破坏或发生了什么,所以我可以弄清楚,请看下面的错误,我也没有在这里使用 polybase,因为在 prem sql server 上有文本数据类型,所以对于那些我使用 varchar(max) 方法的人,因为 polybase 不起作用具有最大数据类型。

错误:

复制活动遇到用户错误 接收端:adatawarehouse.database.windows.net 端: 'Type=System.OverflowException,Message=超出数组尺寸 支持的范围。,Source=Microsoft.DataTransfer.Common,'。

【问题讨论】:

    标签: azure-data-factory polybase


    【解决方案1】:

    在此处查看仓库的限制:https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-service-capacity-limits

    另请阅读:https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-data-types

    看起来 Azure 数据仓库不太喜欢 varchar(max),这是合理的,因为它是为支持商业智能架构而构建的,在这种架构中,长文本字段无法在汇总数据中显示公司的大图.尝试使用 varchar(8000) 代替!

    希望这有帮助!

    【讨论】:

    • 我尝试使用 varchar(8000) 但得到了相同的结果
    • 好的,然后尝试在活动的 sql 查询中强制转换这些字段。 CAST([fieldName] as varchar(8000)) as [fieldName]
    • 这会做什么?
    • 它将查询该字段,就好像它的数据类型是 varchar(8000) 而不是文本。当超过 8000 个字符时,它只是截断数据以适应 8000 个字符。
    • 但是我需要本地服务器中存在的所有数据,我不能只截断不兼容的数据!这就是为什么我在 ADW 中使用带有 HEAP 的 varchar(max) 来完成工作,但我失败了。
    【解决方案2】:

    我能够通过不选择 Blob Staging 来解决此问题,因为我没有使用涉及 Blob 进行暂存的 polybase 技术,存储帐户中的 Blob 出现问题,值未正确插入blob,因此它们不会被插入 ADW。

    但我不明白,如果我们不想使用 polybase,那么我们也可以选择使用 Staging Storage 帐户,为什么会有??

    显然问题已解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多