代码改变世界

【SQLServer】执行SQL查询报错The semaphore timeout period has expired

2022-08-21 16:00  abce  阅读(927)  评论(0编辑  收藏  举报

通过Microsoft SQL Server Management Studio执行sql查询的时候报错:

A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 – The semaphore timeout period has expired.) (Microsoft SQL Server, Error:121)

这种错误一般是由于不稳定的网络连接导致的。网络不稳定的原因有很多,比如:

·不正确的TCP/IP设置

·SQLServer没有配置网络包大小不恰当

·Improperly configured TCP Chimney Offload

·网卡驱动有问题

 

如何检查TCP/IP设置

1.打开sqlserver配置管理器,检查tcp配置设置

2.确认sqlserver的网络配置是正确的

 

如何检查网络包大小设置

一般保持默认值,除非必须要修改该设置。

 

如何检查TCP Chimney Offload

如果我们遇到与网络相关的连接问题,很有必要去检查TCP Chimney Offload的设置。

它是一种网络技术,负责在网络数据传输期间将工作负载从CPU传输到网络适配器。

 

我们可以在以下两个地方启用或禁用此功能:

·操作系统

·网络适配器的高级属性页面

我们的支持技术人员想指出,TCP Chimney Offload功能只有在我们在两个地方都启用该功能时才有效。 默认情况下,这两个地方通常都禁用它。但是,OEM安装往往会在操作系统、网络适配器或两者中启用该功能。​

 

如何检查是否是网卡驱动问题

此故障排除技巧涉及通过检查它们是否是最新的并且没有问题来验证操作系统和网络层的所有驱动程序。如果我们在任何层发现任何问题,我们必须更新驱动程序。