“从服务器接收结果时发生传输级错误”的疑难案例 SQL Server

Nea*_*ers 6 sql-server errors

我们正在构建一个新的 BizTalk 群集,其中包含两个 BizTalk 应用程序服务器和两个 SQL Server。从 BizTalk AppServer #1 上的 SSMS(与 #2 类似),我们有两个场景:

  1. 当前- 我们的基础架构团队刚刚重建了 2012/R2 Windows。它无法连接到特定的 SQL Server,但可以连接到其他 SQL Server。令人困惑的部分是,任何其他机器似乎都能够很好地连接到同一个 SQL Server,并且还可以针对它运行查询。

  2. 昨天- (我们从昨天开始重建盒子,所以不能回去......只是想描述问题。)它似乎偶尔连接。当它连接时,我尝试了一些查询,创建了一个测试数据库和表,并尝试了以下内容:

代码:

declare @MaxLoops int = 100
declare @LoopCounter int = 0 

while (@LoopCounter < @MaxLoops) 
begin 
     set @LoopCounter = @LoopCounter + 1 

     --select SYSDATETIME(), * from NealTest.dbo.NealTest
     waitfor delay '00:00:01' 
     print @LoopCounter 
     print SYSDATETIME() 
end 
Run Code Online (Sandbox Code Playgroud)

我编写脚本的初衷是查看在它“滚动”后我们是否会丢失连接,换句话说,我可以设置它并增加它@MaxLoops并让它运行一个小时左右。(也可以添加 try/catch 以帮助它继续查看它们是否是偶发的连接问题。)

脚本(Select注释掉了语句)给出了一个

传输级错误

所以我们开始一次突出显示一两行。声明工作正常,我可以在声明后打印值。当我们将其降低@MaxLoops到 5 时,它实际上运行了。我们增加到 15 它失败了Transport-level error。相同的脚本可以@MaxLoops = 1000从 SSMS 2008 或 2012 客户端中针对同一 SQL Server 运行的任何其他客户端正常运行(甚至高达)。

这让我认为所涉及的数据包大小可能是问题所在。我放置了大约 20 行数据,每行 40 个字节,并且能够选择整个表,这似乎否定了数据包大小是问题的想法。

此外,从 BizTalk App Server #1,我们可以使用 SSMS 连接到我们商店中的任何其他 SQL Server,并且它工作正常。所以问题似乎特别是在这两对服务器之间。

我们被困住了,试图决定是否应该致电微软,重建 SQL Server,或者什么。

SQL Server@@Version

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
2012 年 12 月 28 日 20:23:12
版权所有 (c) Microsoft Corporation Standard Edition(64 位),Windows NT 6.2(内部版本 9200 :)

最初的问题是 BizTalk 配置实用程序具有相同的“传输级错误”。在当前方案中,甚至未安装 BizTalk。如果 SSMS 无法连接,我们不希望 BizTalk 连接。

这些内部服务器之间没有防火墙。某些 GroupPolicy 会产生任何影响吗?

Nea*_*ers 2

我们开具了 Microsoft 票证,这是我们基础设施团队的回应。我没有获得 HotFix KB #。

解决问题的步骤:

1) 更改两个 SQL 节点上的 Hosts 文件以显示 127.0.0.1 LocalHost

2) 从所有 4 个节点上的 NIC 配置/高级选项卡禁用接收端扩展。这还必须从命令提示符执行:netsh int tcp set global rss=disabled

3) 从所有 4 个节点上的 NIC 配置/高级选项卡禁用 TSC Chimney。这还必须从命令提示符执行:netsh int tcp set global chimney=disabled

4) 从 NIC 配置/高级选项卡禁用 Large Send Offload V2 (IPv4)

5) 重启所有节点

6) 节点重新上线后,启动命令提示符并使用以下命令验证连接属性是否仍处于禁用状态:netsh int tcp show global