如果列超过 39kb,AWS 上的 MS SQL Server 连接将重置

如果列超过 39kb,AWS 上的 MS SQL Server 连接将重置

我们迁移了一个执行一些商业智能的应用程序,因此它确实管理大量数据。这个应用程序在我们自己的环境中运行良好,但在 AWS 中运行时,我们收到了很多“连接重置”问题。

我们发现一个查询从包含 XML 内容的列的表中检索数据。该列为 VARBINARY(MAX),内容大小差异很大。如果我们不返回该列,问题就消失了。进一步调查后发现,只有当该列的内容接近或高于 40kb 时,连接才会重置。

我们正在运行 SQL Server 2012 Web 版,并通过 JDBC 访问它。如果我们通过 SQL Server Management Studio 连接,问题仍然存在,所以这不是 JDBC 或我们的应用程序问题。

这个问题确实类似于另一个问题,但在我们的案例中,我们设法确定只有当列内容接近或高于 40kb 时它才会这样做。

MS 指定VARBINARY 的最大限制为 2GB,因此它应该可以工作。

AWS 有限制吗?在我们的环境中,我们使用 SQL Server 2012 Standard;AWS 是 Web 版,但没有消息来源表明列大小有限制。

更新:我们在同一台机器上使用 SQL Server Management Studio(以前是远程的)运行查询,查询确实返回了正常结果,即使结果大得多!所以问题出在 AWS 中运行时。执行访问的机器也在 AWS 中,但是是另一个盒子。

更新2:简单模拟查询:

SELECT CONVERT(VARBINARY(MAX),REPLICATE(CONVERT(VARCHAR(MAX),'A'), 500000))

有时,低于 5000 的值也会导致问题,但这种情况是间歇性的。如果设置为 500000,您总是会失去连接。SQL Server 日志中不会附加任何内容。

答案1

尝试调整 Windows 计算机的 MTU:ping -f -l [试用 MTU 号码] [其他服务器 IP]

这篇文章解释了如何使用这个技巧: 关联

希望这有帮助!

相关内容