我们正在构建一个新的 BizTalk 群集,其中包含两个 BizTalk 应用程序服务器和两个 SQL Server。从 BizTalk AppServer #1 上的 SSMS(与 #2 类似),我们有两个场景:
当前- 我们的基础架构团队刚刚重建了 2012/R2 Windows。它无法连接到特定的 SQL Server,但可以连接到其他 SQL Server。令人困惑的部分是,任何其他机器似乎都能够很好地连接到同一个 SQL Server,并且还可以针对它运行查询。
昨天- (我们从昨天开始重建盒子,所以不能回去......只是想描述问题。)它似乎偶尔连接。当它连接时,我尝试了一些查询,创建了一个测试数据库和表,并尝试了以下内容:
代码:
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 会产生任何影响吗?
我们开具了 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
| 归档时间: |
|
| 查看次数: |
2316 次 |
| 最近记录: |