SQL Azure连接关闭大json字符串

本文关键字:json 字符串 Azure 连接 SQL | 更新日期: 2023-09-27 18:03:18

我试图将较大的json字符串(c.2Mb)保存到SQL Azure数据库中的NVARCHAR(MAX)列,但得到以下例外:

[SqlException (0x80131904): A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)]

如果我将json字符串设置为",则INSERT语句可以正常工作。我已经成功地保存了其他,较小的json字符串与相同的方法。异常被立即抛出,所以感觉不像超时。尽管如此,我已经尝试更改连接和命令超时,但无济于事。

我正在使用Dapper与SQL对话:

 public async Task<PublisherDto> SaveNewAsync(PublisherDto publisher, int userID)
    {
        using (var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
        {
            var b = await cnn.QueryAsync<PublisherDto>("s_PublisherInsert", new
            {
                publisher.cv_id,
                publisher.Name,
                publisher.ThumbImageUrl,
                publisher.FullImageUrl,
                userID,
                publisher.cv_Url,
                publisher.JsonData,
                publisher.cv_version_hash
            }, commandType: CommandType.StoredProcedure, commandTimeout: 60);
            return b.FirstOrDefault();
        }
    }

有没有人遇到过同样的问题,并有任何想法如何解决它?

SQL Azure连接关闭大json字符串

尝试将超时时间设置为更高的值。根据文档,错误与超时有关。

https://support.microsoft.com/en-us/kb/555938

希望有帮助。

rn

我遇到了这个问题,并且无法准确诊断出问题的根源是什么,但是我引入了一个连接弹性类,以便在出现故障时自动重试。同样,虽然这不能解决或识别潜在的根本问题,但它确实使应用程序对问题具有健壮性。

我使用实体框架连接到Azure SQL,并使用DbExecutionStrategy实现弹性连接的基本操作方法在这里。

看起来您可能正在使用ADO进行连接。这是一篇关于实现ADO的有用文章。. NET连接弹性。

您设置了命令超时时间,但没有提及连接到db的超时时间。我建议在连接字符串中延长连接超时。