【发布时间】:2021-10-23 16:34:41
【问题描述】:
我正在尝试对我创建的具有复制数据活动的管道进行故障排除。源是 REST API,接收器是 Azure SQL 托管实例。我设置了分页规则,以便它遍历数据并将其全部读取,但管道失败。如果我关闭分页并且只读取前 100 行它不会失败并将前 100 行下沉到数据库。
这是我的错误: ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=数据库操作失败。请搜索错误以获取更多详细信息。,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=从 bcp 客户端收到无效的列长度为 colid 20.,Source=.Net SqlClient Data Provider,SqlErrorNumber=4815,Class=17,ErrorCode=-2146232060,State=1,Errors=[{Class=17,Number=4815,State=1,Message=从 bcp 客户端接收到 colid 20 的无效列长度.,},],'
我的问题是,它说,colid 20。那个 colid 20 来自我的管道中的 Mappings 选项卡中的映射,还是 REST API 返回的 colid 20?有没有办法找出导致问题的字段/值,错误似乎太模糊而无济于事!如果源字段比此复制活动的映射中的数据库表数据类型长,是否可以截断源字段?
【问题讨论】:
-
也许你可以把你的问题分成两半。如果您选择不同的水槽,它仍然会失败,例如到 Azure 存储作为文件。也许你可以检查文件是否包含不寻常的东西。
-
问题可能是第 20 列中的数据比预期的大,请参阅stackoverflow.com/questions/10442686/… 了解类似问题。
-
如果您想查看 REST API 返回的内容,您可以使用管道中的 Web 活动来进行调试。确保您发出与 Copy 活动相同的调用。 API 输出将出现在 ADF 的输出选项卡中,假设此错误不是来自 API 本身,在这种情况下您将看不到任何内容。您也可以使用 Postman 之类的客户端,或者只是在浏览器中调用它,具体取决于 API。
标签: azure-pipelines azure-data-factory