首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure数据工厂V2复制数据问题-错误代码: 2200

Azure数据工厂V2复制数据问题-错误代码: 2200
EN

Stack Overflow用户
提问于 2019-11-12 14:11:40
回答 1查看 7.4K关注 0票数 1

我试图使用ServiceNow Azure data V2中的REST 连接器从表中提取数据。在提取数据时,有时会得到以下错误,有时不会收到任何错误,管道正在成功运行。

代码语言:javascript
复制
{
"errorCode": "2200",
"message": "Failure happened on 'Source' side. ErrorCode=UserErrorInvalidJsonDataFormat,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error occurred when deserializing source JSON data. Please check if the data is in valid JSON object format.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Newtonsoft.Json.JsonReaderException,Message=Invalid character after parsing property name. Expected ':' but got: ,. Path 'result', line 1, position 15740073.,Source=Newtonsoft.Json,'",
"failureType": "UserError",
"target": "REST-API-ServiceNow" 
}

有人能帮帮我吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 02:14:24

1.反序列化源JSON数据时出错。请检查数据是否为有效的JSON对象格式。解析属性名称后的2.Message=Invalid字符。预期的“:”但得到:.。

我认为错误细节表明您的源数据不能被ADF反序列化,因为它不是标准的format.Illegal JSON数据不能通过ADF复制活动传递。

我不能在我这边重现您的问题,因为我不能接触您的源data.However,我建议您在执行复制活动之前使用WEB活动调用REST。并收集Web活动的输出(来自REST的响应),将它们存储在其他住所中。这样每次都可以检查源数据是否合法。

我的想法如下:

1.将Web活动配置为调用REST,然后可以从源数据中获得响应。

2.配置一个函数Activity来记录上述Web活动的输出。

应该将Body设置为Web:@activity('Web1').output的输出,然后将其记录到函数应用程序中。下面是一些示例函数代码:

代码语言:javascript
复制
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace FunctionAppStoreCSV
{
    public static class Function2
    {
        [FunctionName("Function2")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();


            dynamic data = JsonConvert.DeserializeObject(requestBody);

            log.LogInformation(requestBody);

            return requestBody != null
                ? (ActionResult)new OkObjectResult($"Log Successfully")
                : new BadRequestObjectResult("Please pass output in the request body");
        }
    }
}

我在本地进行了测试,您可能会看到日志数据,如下所示:

如果它在门户中,您可以在KUDU url:D:\home\LogFiles\Application\Functions\function\Function2>上查看日志。

3.在您的复制活动之前,在ADF中将两者连接起来。

提示:

我的方式可以节省金钱为天蓝色的存储,我只是记录数据,以便您可以检查数据是否遵循严格的格式。当然,你可以把它们存储在blob存储器中。只需编写代码将Body数据存储到Blob存储中,就可以在Azure函数应用程序中使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58820399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档